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构造函数,也就是说非静态初始化块的执行顺序要在构造函数之前。
如果您觉得对您有帮助,请帮忙点赞。老师说,点赞的人最美。
本文详细解析了Java中子类继承父类时,静态代码块、非静态代码块及构造方法的执行顺序。通过具体代码示例,清晰展示了执行流程:先执行父类静态代码块,接着是子类静态代码块,随后是父类非静态代码块和构造函数,最后是子类的非静态代码块和构造函数。
391

被折叠的 条评论
为什么被折叠?



