1
在該(Initialize field before super constructor runs?)後的狀態,所有的非靜態變量獲得超類的構造函數運行後初始化,但在下面的例子中,在調試時我看到變量沒有初始化之前父構造運行,打印功能打印,好像它被初始化的結果「B = 5」。最終vairable初始化相對於超類的構造函數
當我使用非最終變量結果是「B = 0」按預期方式。
發生了什麼事?
這裏是代碼:
public class A {
int a=77;
public A(int i){
printMe();
}
public void printMe(){
System.out.println("A "+a);
}
}
public class B extends A{
//static int a=5; //test will print 5
final int a=5; //test will print 5
//int a=5; ////test will print 0
public B() {
super(0);
}
public void printMe(){
System.out.println("B="+a);
}
public static void main(String[] args) {
new B();
}
}