也谈一个对象初始化细节

网上这类的文章多了,也就归纳了一下:

初始化按串行顺序如下:

……
超类静态成员变量
超类静态块
子类静态成员变量
子类静态块
……

……
超类成员变量分配引用并默认初始化
子类成员变量分配引用并默认初始化
……
……
超类成员变量用显式初始化值赋值
超类构造器
子类成员变量用显式初始化值赋值
子类构造器
……
……


另外,这样的初始化顺序中,如果子类继承了超类的a方法并在其中修改了子类自己的成员变量,而a方法在超类的构造函数中被调用,那么这个修改的值将被“子类成员变量用显式初始化值赋值”这一过程重新覆盖而导致修改失效。

我是这样理解的,大家给点意见。




你可能感兴趣的:(也谈一个对象初始化细节)