当子类继承父类时,构造块,静态块,静态方法的执行顺序

当子类继承父类时,构造块,静态块,静态方法的执行顺序:
首先编写父类代码如下:

` public parent() {
        System.out.println("父类构造函数");
    }
    static{
        System.out.println("父类静态块");
    }
    {
        System.out.println("父类构造块");
    }`
然后编写子类代码如下:
 public class chrild extends parent{

    public chrild() {
        super();
        System.out.println("子类构造函数");
    }
    static {
        System.out.println("子类静态块");
    }
    {
        System.out.println("子类构造块");
    }
    public void print(){
        System.out.println("print");
    }
    public static void main(String[] args) {
        new chrild().print();
    }
}   

当子类继承父类时,构造块,静态块,静态方法的执行顺序_第1张图片
运行结果如下:
父类静态块>子类静态块>父类构造快>父类构造函数>子类构造块>子类构造函数。
静态代码优先于非静态的代码,因为静态块代码在被jvm加载时就被执行,而没有被static修饰代码,在对象创建时才被执行。
构造代码块优先于构造方法的方法体

你可能感兴趣的:(java,函数,继承,class)