java初始化顺序

    xiaoxiao2021-12-14  18

    public class Father { int a=1; static int b=2; { System.out.println("father-a=="+a); System.out.println("father-b=="+b); } static{ //System.out.println("a=="+a); System.out.println("father-static-b=="+b); } public Father(){ System.out.println("father-构造方法-a=="+a); System.out.println("father-构造方法-b=="+b); } }

    public class Son extends Father{ int a=1; static int b=2; { System.out.println("son-a=="+a); System.out.println("son-b=="+b); } static{ //System.out.println("a=="+a); System.out.println("son-static-b=="+b); } public Son(){ System.out.println("son-构造方法-a=="+a); System.out.println("son-构造方法-b=="+b); } }

    测试: new Son(); 输出: father-static-b==2 son-static-b==2 father-a==1 father-b==2 father-构造方法-a==1 father-构造方法-b==2 son-a==1 son-b==2 son-构造方法-a==1 son-构造方法-b==2 可以看出,初始化顺序应该是: 1、父类静态初始化块 2、子类静态初始化块 3、父类初始化块 4、父类构造器 5、子类初始化块 6、子类构造器 又由于在初始化块中输出了变量的值,说明在进入初始化块之前,变量已经初始化完成了。而且,据说也是静态变量优先于实例变量。
    转载请注明原文地址: https://ju.6miu.com/read-970375.html

    最新回复(0)