我想了解各種情況下類實例的初始化。
在JLS-7 12.5節中,沒有提到最終實例變量是如何以及何時初始化的?有人能指出我瞭解在實例變量聲明爲final的情況下的行爲嗎?初始化「最終」實例變量
public class Test {
public static void main(String args[]){
Child c1 = new Child();
}
}
class Parent{
final int a =30;
Parent(){
System.out.println("From super Contsrutor "+a);
meth();
}
void meth(){
System.out.println("From super");
}
}
class Child extends Parent{
final int e=super.a;
int b=30;
void meth(){
System.out.println("From Sub e=" +e+", b="+b);
}
}
是給輸出如下
From super Contsrutor 30
From Sub e=0,b=0
凡爲
public class Test {
public static void main(String args[]){
Child c1 = new Child();
}
}
class Parent{
final int a =30;
Parent(){
System.out.println("From super Contsrutor "+a);
meth();
}
void meth(){
System.out.println("From super");
}
}
class Child extends Parent{
final int e=a;
void meth(){
System.out.println("From Sub " +e);
}
}
是給輸出
From super Contsrutor 30
From Sub 30
你能發佈實際的代碼嗎? – njzk2
此代碼目前沒有工作,您沒有任何構造函數,因爲'a'不是父類的名稱。 'meth()'方法永遠不會被調用,但它會創建一個輸出。如果你清理代碼,我們可能會更好地幫助你。 –
已更正代碼 – Pushparaj