class Base{
static{
System.out.println("Base static block");
}
{
System.out.println("Bae block");
}
public Base(){
System.out.println("Base constructor");
}
}
public class Derived extends Base{
static{
System.out.println("Derived static block");
}
{
System.out.println("Derived block");
}
public Derived(){
System.out.println("Derived constructor");
}
public static void main(String[] args){
new Derived();
}
}
Java程序初始化顺序?
Java初始化遵循三原则(优先级依次递减)
静态对象(变量)优先于非静态对象(变量)初始化。静态对象(变量)只初始化一次,非静态对象(变量)可多次初始化
父类优先于子类初始化
按照成员变量定义顺序进行初始化,即使变量定义散布在方法定义中,依旧在任何方法(包括构造函数)调用之前先初始化。
Java初始化可以在不同代码块完成,执行顺序如下: