初始化顺序
三个原则,递减的优先级:
静态对象(变量)优先于非静态对象(变量)初始化,其中静态只初始化一次,非静态可能初始化多次
父类优先于子类进行初始化
按照成员变量定义的顺序进行初始化,即使变量定义散布于方法定义之中,他们依然在任何方法(包括构造函数)被调用之前被初始化
从先到后分别是:
父类static初始化块
子类static初始化块
父类普通初始化块
父类构造器
子类普通初始化块
子类构造器
即初始化块始终比构造器先执行
初始化过程:
1. 初始化父类中的静态成员变量和静态代码块 ;
2. 初始化子类中的静态成员变量和静态代码块 ;
3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;
4.初始化子类的普通成员变量和代码块,再执行子类的构造方法;