我想了解各种情况下类实例的初始化。
在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