Java中一个对象的构造过程如下:
1.用类加载器加载父类,按父类静态变量定义的顺序的为父类所有静态变量分配空间,并赋予父类静态变量默认值。
2.用类加载器加载自己,按自己静态变量定义的顺序的为自己所有静态变量分配空间,并赋予自己静态变量默认值。3.按父类静态变量定义的顺序的为父类所有静态变量赋上定义的值。
4.执行父类静态代码块。
5.按自己静态变量定义的顺序的为自己所有静态变量赋上定义的值。
6.执行自己静态代码块。
7.为父类实例变量分配空间,并赋予默认值。
8.为自己实例变量分配空间,并赋予默认值。
9.按父类实例变量定义的顺序的为父类所有实例变量赋上定义的值。
10.执行父类的构造代码块。
11.执行父类的构造方法。
12.按自己实例变量定义的顺序的为自己所有实例变量赋上定义的值。
13.执行自己的构造代码块。
14.执行自己的构造方法。
15.对象构造完毕。
注意:
1.父类如果还有父类就也依照此顺序先初始化父类的父类,直到Object为止。
2.如果执行步骤3、5、9、12时,定义的值引入了别的类,则会初始化那个类,如果引用的类还有引用的类则也按照此顺序先初始化引用类的引用类,直到所有被引用的类全部被初始化完毕为止。3.如果一个类没有父类(如Object类),则它的初始化顺序可以简化成2、5、6、8、12、13、14、15。
在 思想永无止境 上转载