一.当类之间有继承关系后,创建对象时初始化的顺序如下 1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
4. 父类构造方法
5. 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
6. 子类构造方法 class X { //父类的实例成员,执行优先为第3 Y b=new Y(1); X() { //接下来就调用父类构造函数,执行优先为第4 System.out.print("X"); } class Y { Y() { System.out.print("Y"); } Y(int a) { System.out.print("A"); } } } class Z extends X { //子类实例成员被执行,执行优先为第5 Y y=new Y(); Z() { //最后才执行子类构造方法,执行优先第6 System.out.print("Z"); } public static void main(String[] args) { Z z=new Z(); } } 按照上面的规则打印的就是 A X Y Z
|