请看这段代码:
class Sup {
int a = 8;
public void printA() {
System.out.println(a);
}
Sup() {
printA();
}
}
public class Sub extends Sup {
int a = 9;
@Override
public void printA() {
System.out.println(a);
}
Sub() {
printA();
}
public static void main(String[] args) {
Sub sub = new Sub();
}
}
Run Code Online (Sandbox Code Playgroud)
结果:控制台打印: 0 9
我知道子类将首先调用超类constructor
但是,为什么0 9 不是8 9?
Era*_*ran 14
当Sup构造函数调用printA()它时,它执行printA类的方法Sub(它覆盖了同名类的方法Sup),所以它返回aclass 的变量的值Sub,这仍然是0,因为实例变量Sub尚未初始化(它们是仅在Sup构造函数完成后初始化).
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |