首页 > 代码库 > java初始化顺序
java初始化顺序
基本顺序为:
1 继承体系的所有静态成员初始化(先父类,后子类)
2 父类初始化完成(普通成员的初始化-->构造函数的调用)
3 子类初始化(普通成员-->构造函数)
Java初始化顺序如图:
实例代码:
package initialization;public class TestInit { // 主函数 public static void main(String str[]) { System.out.println("无继承情况下初始化顺序:"); new Test(); System.out.println("\n带有继承情况下初始化顺序:"); new TestSub(); }}class Sample { Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用"); }}class Test { static Sample sam = new Sample("静态成员sam初始化"); Sample sam1 = new Sample("sam1成员初始化"); static { System.out.println("static块执行"); if (sam == null) System.out.println("sam is null"); sam = new Sample("静态块内初始化sam成员变量"); } Test() { System.out.println("Test默认构造函数被调用"); }}class TestSub extends Test{ static Sample staticSamSub=new Sample("子类 静态成员staticSamSub初始化"); TestSub() { System.out.println("子类 TestSub 默认构造函数被调用"); } Sample sam1=new Sample("子类 sam1成员初始化"); static Sample staticSamSub1=new Sample("子类 静态成员staticSamSub1初始化"); static{System.out.println("子类 static 块 执行");} Sample sam2=new Sample("子类 sam2成员初始化");}/* 输出结果:无继承情况下初始化顺序:静态成员sam初始化static块执行静态块内初始化sam成员变量sam1成员初始化Test默认构造函数被调用带有继承情况下初始化顺序:子类 静态成员staticSamSub初始化子类 静态成员staticSamSub1初始化子类 static 块 执行sam1成员初始化Test默认构造函数被调用子类 sam1成员初始化子类 sam2成员初始化子类 TestSub 默认构造函数被调用*/
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。