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