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

时间:2021-03-06 19:49:53

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

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.子类的构造器