(原)Java初始化过程
先看一个demo,然后进行归纳。
1 class X{ 2 static M m=new M(); 3 Y y=new Y(); 4 public X(){ 5 System.out.print("X"); 6 } 7 } 8 class Y{ 9 public Y(){ 10 System.out.print("Y"); 11 } 12 } 13 14 class M{ 15 public M(){ 16 System.out.print("M"); 17 } 18 } 19 20 class N{ 21 public N(){ 22 System.out.print("N"); 23 } 24 } 25 26 public class Z extends X{ 27 static N n=new N(); 28 Y y=new Y(); 29 public Z(){ 30 System.out.print("Z"); 31 } 32 public static void main(String[] args) { 33 new Z(); 34 } 35 }
通过单步调试及查阅相关资料可对Java初始化归纳出以下结论:
1、初始化父类中的静态成员变量和静态代码块。
2、初始化子类中的静态成员变量和静态代码块。
3、初始化父类的普通成员变量和代码块,再执行父类的构造方法。
4、初始化子类的普通成员变量和代码块,再执行子类的构造方法。
路漫漫其修远兮,吾将上下而求索