静态代码块和构造函数的顺序

时间:2021-11-17 19:29:13

最近犯了一个严重的错误,就是静态代码块和构造函数的执行顺序问题,静态代码块是在构造函数之前执行的

public class A {
static {
System.out.println("static A");
}
public A(){
System.out.println("构造 A");
}
}

public class B extends A {
static {
System.out.println("static B");
}
public B(){
System.out.println("构造 B");
}
public static void main(String args[]){
A a = new B();
}
}

打印结果为:而且发现子类总会调用父类的无参构造函数

static A
static B
构造 A
构造 B