java初始化构造函数调用顺序

Posted XianMing的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java初始化构造函数调用顺序相关的知识,希望对你有一定的参考价值。

直接举例说明,看下面程序和结果。

class HelloA
    //父类构造函数
    public HelloA() 
        System.out.println("HelloA");
    
    //父类块
    System.out.println("I am A");
    //父类静态块
    static 
        System.out.println("static A");
        


public class HelloB extends HelloA
    //构造函数
    public HelloB()
        System.out.println("HelloB");
    
    //块
    System.out.println("I am B");
    //静态块
    static 
        System.out.println("static B");
        

    public static void main(String[] args) 
        //初始化子类HelloB
        new HelloB();
    


运行结果:

static A
static B
I am A
HelloA
I am B
HelloB

所以结论是:在程序中,实例化一个类对象的时候,运行顺序为:

1.父类静态块
2.子类静态块
3.父类块
4.父类的构造器
5.子类块
6.子类的构造器

以上是关于java初始化构造函数调用顺序的主要内容,如果未能解决你的问题,请参考以下文章

java中静态方法,静态变量,静态初始化器,构造函数,属性初始化都是啥时候调用的? 它们的先后顺序。

静态代码块构造代码块构造函数以及Java类初始化顺序

Java对象实例化顺序

Dart类(构造函数、单例)

静态代码块构造代码块构造函数以及Java类初始化顺序

java中静态代码块构造代码块构造方法main函数的执行顺序?