62,614
社区成员
发帖
与我相关
我的任务
分享
public class Test {
public static void main(String[] args) {
new Sub();
}
}
class Base {
private int i = 2;
public Base() {
System.out.println("执行了Base()");
System.out.println(this.i);
this.display();
}
public void display() {
System.out.println("执行了Base.display");
System.out.println(i);
}
}
class Sub extends Base {
private int i = 222;
public Sub() {
System.out.println("执行了Sub()");
i = 222;
}
public void display() {
System.out.println("执行了Sub.display");
System.out.println(this.i);
}
}
结果:
执行了Base()
2
执行了Sub.display
0
执行了Sub()
执行流程看到了吧?先执行Sub类的display方法,然后再执行private int i = 222;
public Sub() {
System.out.println("执行了Sub()");
i = 222;
}
注入i的值,所以执行display的时候i=0,不是222