Java初始化顺序
父类静态变量,静态代码块==== 》子类静态变量,静态代码块==== 》父类代码块==== 》父类构造函数==== 》子类代码块====》子类构造函数
3个原则:
- 静态变量优于非静态变量,且静态变量值初始化一次,非静态变量可能会初始化多次。
- 父类优先于子类。
- 若优先级一样则按照顺序进行初始化
我们在定义(声明)实例变量的同时,还可以直接对实例变量进行赋值或者使用实例代码块对其进行赋值。如果我们以这两种方式为实例变量进行初始化,那么它们将在构造函数执行之前完成这些初始化操作。实际上,如果我们对实例变量直接赋值或者使用实例代码块赋值,那么编译器会将其中的代码放到类的构造函数中去,并且这些代码会被放在对超类构造函数的调用语句之后(还记得吗?Java要求构造函数的第一条语句必须是超类构造函数的调用语句),构造函数本身的代码之前。