为什么最后i输出1,求解答

public class TestA{
TestA(){
System.out.println("P");
this.init();
}
void init(){
System.out.println("Q");
}
public static void main(String[] args){
TestB testb = new TestB();
}
}
class TestB extends TestA{
int i=1;
TestB(){
super();
Ststem.out.println(i+"");
}
void init(){
System.out.println("C");
this.i=2;
System.out.println(i+"");
}
}

说错了,其实TestB的int是在 i = 1是在构造方法里面初始化的 初始化的时候是在super下面 所以你在super里面的操作都是被覆盖的

super();调用的就是父类的方法this 也是父类的this

图片说明

看执行的步骤,不懂可以在eclipse上debugger断点查看执行过程,watch捕获 i的值。

图片说明