java内部类 编程题
时间: 2025-01-05 19:35:28 浏览: 6
### Java 内部类编程练习题
#### 题目一:成员内部类中的静态变量定义与访问
考虑如下代码:
```java
public class Test {
public static void main(String[] args) {
A.Inner inner = new A().new Inner();
inner.show();
}
}
class A {
int y = 6;
class Inner {
static int y = 3; // 错误所在
void show() {
System.out.print(y);
}
}
}
```
这段代码尝试创建`A`类的一个实例并从中获取其成员内部类`Inner`的对象,最后调用`show()`方法打印某个整数值。然而,在编译阶段就会遇到错误,因为成员内部类不允许含有静态字段或静态初始化器[^1]。
#### 正确版本应去掉`static`关键字:
```java
class A {
int y = 6;
class Inner {
int y = 3;
void show() {
System.out.print(this.y); // 输出内层y值
}
}
}
```
#### 题目二:继承关系下的构造函数执行顺序
给定两个相互关联的类`A`和`B`,其中`B`继承自`A`,观察它们各自的无参构造函数被调用的情况。
```java
public class Test {
public static void main(String[] args) {
B b = new B();
}
}
class A {
public A() {
System.out.println("A");
}
}
class B extends A {
public B() {
System.out.println("B");
}
}
```
当运行上述代码时,控制台会先显示"A"再紧接着显示"B"。这是因为子类对象创建过程中,父类构造函数总是优先于任何子类特定的操作被执行。
阅读全文