java中代码块的先后执行顺序
执行顺序
静态块(static) > main()方法 > 构造块(直接用{}定义) > 构造方法(public 类名)。
class A {
static{
System.out.println("父类静态代码块");
}
public A(){
System.out.println("父类构造方法");
}
{
System.out.println("父类初始代码块,构造块");
}
}
class B extends A {
static{
System.out.println("子类静态代码块");
}
public B(){
System.out.println("子类构造方法");
}
{
System.out.println("子类初始代码块,构造块");
}
}
执行顺序
父类静态代码块 > 子类静态代码块 > 父类成员初始化(构造函数) > 父类构造块(初始化块) > 父类构造方法 > 子类成员初始化 > 子类构造块 > 子类构造方法