继承中类初始化顺序

来源:互联网 发布:ios 添加unity3d插件 编辑:程序博客网 时间:2024/05/16 05:13

       在继承体系中,父子类的初始化存在先后顺序,涉及父子类中都存在静态变量、静态代码块、普通变量、普通代码块、构造函数

       其初始化流程图如下:

         

      注:变量和代码块的执行顺序依据代码编写的先后顺序。

 

        以下以代码举例说明,有图有代码有真相,呵呵。

      父类:

 

public class Parent{private static final String parentStaticStr="初始化父类Static变量"; static {System.out.println(parentStaticStr);System.out.println("初始化父类Static代码块");}private String parentStr="初始化父类普通变量";{System.out.println(parentStr);System.out.println("初始化父类普通代码块");}public Parent(){System.out.println("初始化父类构造函数");}}

       子类:

public class Child extends Parent{private static final String childStaticStr="初始化子类Static变量"; static {System.out.println(childStaticStr);System.out.println("初始化子类Static代码块");}private String childStr="初始化子类普通变量";{System.out.println(childStr);System.out.println("初始化子类普通代码块");}public Child(){System.out.println("初始化子类构造函数");}}


 

      执行:

public class InitOrderTest {public static void main(String []args){Child child=new Child();}}


 

     执行结果:

    

 

 

0 0
原创粉丝点击