最近看了java编程思想,感觉很多地方写的比较清晰细致,所以想写一些心得,下面这篇心得主要是关于对象的初始化顺序和过程的。
java对象的整个初始化顺序是这样的:
1.基类的静态域部分初始化(如果有要初始化的对象所属的类有基类,并且基类中有静态域);
2.本对象所属的类的静态域部分初始化(如果本对象所属类含有静态域);
3.基类的非静态成员初始化(按照成员定义顺序),基类的构造器被调用;
4.顺序初始化本对象非静态成员,调用本对象构造器;
看到这里大家可能会觉得奇怪,为什么不在基类静态成员初始化后接着初始化基类的其他成员呢,反而接着去初始化基类的派生类中的静态成员,再绕回来初始化基类的非静态成员呢。这是因为类的静态成员初始化会在类加载后立即完成,所以会出现我们所看到的结果。