class Super {
private int s = 100; Super() {
abc();
} void abc() {
System.out.println("s " + s);
}
}
class Sub extends Super {
private int s1 = 200; void abc() {
System.out.println("s1 " + s1);
}
public static void main(String[] args) {
new Sub();
}}输出结果是 s1 0 为什么是0.
private int s = 100; Super() {
abc();
} void abc() {
System.out.println("s " + s);
}
}
class Sub extends Super {
private int s1 = 200; void abc() {
System.out.println("s1 " + s1);
}
public static void main(String[] args) {
new Sub();
}}输出结果是 s1 0 为什么是0.
这时候还没来得及初始化子类对象的变量
Super() {
abc(); // 此时,初始化还在父类,但是却调用了子类的abc()
}
void abc() {
System.out.println("s1 " + s1); // 此时,子类并没有初始化,因为父类还没有完成呢,所以属性是默认值0
}
明白了吗?初始化顺序是父类优先。