美文网首页
Java初始化顺序

Java初始化顺序

作者: 姜殷俊 | 来源:发表于2017-07-30 18:47 被阅读0次

    1  无继承情况下的Java初始化顺序:

    输出结果为:

    由此可以得出结论:

    a静态成员变量首先初始化(注意,Static可以看做一个静态成员,其执行顺序和其在类中申明的顺序有关)

    b 普通成员初始化

    c 执行构造函数。

    对于静态成员(static块可以看成普通的一个静态成员,其并不一定在类初始化时首先执行)和普通成员,其初始化顺序只与其在类定义中的顺序有关,和其他因素无关。

    例如下面的例子:

    运行结果为

    static 块 1  执行

    静态成员staticSam1初始化

    静态成员staticSam2初始化

    static 块 2  执行

    --------静态成员

    sam1成员初始化

    sam2成员初始化

    --------普通成员

    Test默认构造函数被调用

    --------构造函数

    2 Java继承情况下的初始化顺序:

    运行结果:

    父类 static 块 1  执行

    父类 静态成员staticSam1初始化

    父类 静态成员staticSam2初始化

    父类 static 块 2  执行

    --------父类静态成员初始化

    子类 静态成员staticSamSub初始化

    子类 静态成员staticSamSub1初始化

    子类 static 块  执行

    -------子类静态成员初始化

    父类 sam1成员初始化

    父类 sam2成员初始化

    父类 Test默认构造函数被调用

    -------父类普通成员初始化和构造函数执行

    子类 sam1成员初始化

    子类 sam2成员初始化

    子类 TestSub 默认构造函数被调用

    -------父类普通成员初始化和构造函数执行

    由此得出Java初始化顺序结论:

    1 继承体系的所有静态成员初始化(先父类,后子类)

    2 父类初始化完成(普通成员的初始化-->构造函数的调用)

    3 子类初始化(普通成员-->构造函数)

    相关文章

      网友评论

          本文标题:Java初始化顺序

          本文链接:https://www.haomeiwen.com/subject/uztklxtx.html