Java子父类间静态代码块、非静态代码块、构造方法的执行顺序
class B{
static{
System.out.println("父类B静态代码块");
}
{
System.out.println("父类B非静态代码块");
}
public B(){
System.out.println("父类B构造函数");
}
}
class A extends B{
static{
System.out.println("子类A静态代码块");
}
{
System.out.println("子类A非静态代码块");
}
public A(){
System.out.println("子类A构造函数");
}
}
public class Test {
public static void main(String[] args){
A a=new A();
}
}
执行结果
父类B静态代码块
子类A静态代码块
父类B非静态代码块
父类B构造函数
子类A非静态代码块
子类A构造函数
总结:正确的执行顺序是:父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数,也就是说非静态初始化块的执行顺序要在构造函数之前。
如果您觉得对您有帮助,请帮忙点赞。老师说,点赞的人最美。