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() {// 修饰符protected, 输出为0 9, 为priviate时, 输出6 9
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);
}
}
}
这问题纠结半天还是没懂,我知道当创建子类object时, 会先用到父类的构造函数,然后再是自己的构造函数。
这道题父类的方法为protected void initialize()时, 输出是
0
9
当把父类方法改为priviate void initialize(), 输出是
6
9
请问一下这是为什么?