版权所有:(xiaodaoxiaodao)蓝小刀 http://www.blogjava.net/xiaodaoxiaodao/archive/2007/06/06/122383.html
转载请注明来源/作者
Java 对象初始化顺序
java 对象是如何进行初始化的,新建一PrintClass.java文件如下(包括类PrintClass以及A和其子类B),编译运行其中的main方法,
可以看到运行结果为:
A. 静态成员的初始化1
A. 静态初始化块1
A. 静态初始化块2
A. 静态成员的初始化2
B. 静态初始化块1
B. 静态成员的初始化1
B. 静态成员的初始化2
B. 静态初始化块2
A. 实例初始化块1
A. 实例成员的初始化
A. 实例初始化块2
A. 构造方法
Avar=1111
B. 实例初始化块1
B. 实例初始化块2
B. 实例成员的初始化
B. 构造方法
Bvar=2222
由此可知当新建一java对象(上面main方法中new B())时,它的内部初始化顺序为:
1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
4. 父类构造方法
5. 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
6. 子类构造方法
1,在new B一个实例时首长要进行类的装载。
2,在装载类时,先装载父类A,再装载子类B
3,装载父类A后,完成静态动着
4,装载子类B后,完成静态动着
好类装载完成,开始进行实例化
1,在实例化子灯B时,先要实例化父类A
2,实例化父类A时,先成员实例化
3,父类A的构造函数
4,子类B的成员实例化
5,子类B的构造函数