Java初始化顺序

Java初始化顺序:①类变量、类方法>②(父类代码)>③实例变量>④构造器
当一个类要实例化时,static变量和方法先被初始化;接着进入父类初始化流程,接着实例化本类的实例变量,调用构造器。

这样会造成一个问题:父类构造器中调用了可以被子类重写的方法(非static、final、private),而这个方法又调用了实例变量时,在初始化的时候实际上调用的时子类中已经重写了的方法,因而使用的也是子类的实例变量,而这时子类实例变量还未被初始化(*此时该变量只是被统一设置为二进制的0),所以会出现意想不到的错误。要避免这种写法。

*在②中,当所有的父类都被加载完后,对象被创建,对象中所有基本类型被设置为默认值,对象引用被设置为null。

你可能感兴趣的:(Java初始化顺序)