实例:
class A {
static {
System.out.print("1");
} //父类静态成员
public A() {
System.out.print("2");
} //父类方法
}
class B extends A {
static {
System.out.print("a");
} //子类静态成员
public B() {
System.out.print("b");
} //子类方法
}
public class Hello {
public static void main(String[] args) {
A d = new B();
d = new B();
}
}
运行结果: 1a2b2b
原因:
创建对象时构造器的调用顺序是:
先初始化静态成员,
然后调用父类构造器,
再初始化非静态成员,
最后调用自身构造器。