相关疑难解决方法(0)

在使用继承时,静态块和初始化块以什么顺序执行?

我有两个班级父母和孩子

public class Parent {    
    public Parent() {
        System.out.println("Parent Constructor");
    }    
    static {
        System.out.println("Parent static block");    
    }    
    {
        System.out.println("Parent initialisation  block");
    }
}

public class Child extends Parent {    
    {
        System.out.println("Child initialisation block");
    }
    static {
        System.out.println("Child static block");
    }

    public Child() {
        System.out.println("Child Constructor");
    }    
    public static void main(String[] args) {
        new Child();    
    }
}
Run Code Online (Sandbox Code Playgroud)

上面代码的输出将是

Parent static block
Child static block
Parent initialization  block
Parent Constructor
Child initialization block
Child Constructor
Run Code Online (Sandbox Code Playgroud)

为什么Java按该顺序执行代码?确定执行顺序的规则是什么?

java inheritance constructor static-block

81
推荐指数
5
解决办法
6万
查看次数

标签 统计

constructor ×1

inheritance ×1

java ×1

static-block ×1