8
请看看这段代码:爪哇 - 扩展为什么超变量是0
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();
}
}
结果: 控制台打印:0 9
我知道,子类将首先调用父constructor
但是,为什么是0 9
,而不是8 9
?
您确定按照您认为的顺序调用构造函数吗? –
@ cricket_007:当然这是所谓的。你**不能**避免在Java中调用它。 –
@ T.J.Crowder您可以通过使用序列化或克隆来避免它。 – Flown