J2SE综合:高手帮你全面理解初始化顺序
百度广告
例子
class A{
public static int num=getNum();
System.out.print("A3");
static{
}
System.out.print("A2,");
public String test()
String str="A.test(),";
return str;
public static int getNum()//它只属于A
System.out.print("A.getNum(),");
}
class B extends A{
System.out.print("c");
static{
}
System.out.print("b,");
public String test()//覆盖
String str="B.test(),";
return str;
public static int getNum()//它只属于B,不能覆盖
System.out.print("B.getNum(),");
}
public class InitTest{
new B(); //执行到此处,结果: A.getNum(),A1,a,B.test(),A3A2,cb,
new B(); //执行到此处,结果: B.test(),A3A2,cb,
}
首先在加载类时初始化static变量,同时按定义的顺序执行static{}块;
最后执行构造函数;
以上的每个步骤都是先执行父类部分,再执行子类部分;
编辑推荐:
温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)
点击加载更多评论>>