代码:
public class Solution {
public static void main(String[] args) {
new B(6);
}
public static class A {
private int f1 = 7;
public A(int f1) {
this.f1 = f1;
initialize();
}
protected void initialize() {
System.out.println(f1);
}
}
public static class B extends A {
protected int f1 = 3;
public B(int f1) {
super(f1);
this.f1 += f1;
initialize();
}
protected void initialize() {
System.out.println(f1);
}
}
}
打印的结果是0 9
,我不是很理解,调试之后发现父类A的构造函数在调用initialize()
方法时调用的是子类B中的同名方法,且输出结果为0,表示f1
没有被初始化,这是为什么?