Java程序初始化的顺序是怎样的?

实例

class Base {
    // 1.父类静态代码块
    static {
        System.out.println("Base static block!");
    }
    // 3.父类非静态代码块
    {
        System.out.println("Base block");
    }
    // 4.父类构造器
    public Base() {
        System.out.println("Base constructor!");
    }
}

public class Derived extends Base {
    // 2.子类静态代码块
    static{
        System.out.println("Derived static block!");
    }
    // 5.子类非静态代码块
    {
        System.out.println("Derived block!");
    }
    // 6.子类构造器
    public Derived() {
        System.out.println("Derived constructor!");
    }
    public static void main(String[] args) {
        new Derived();
    }
}


结果是:

Base static block!
Derived static block!
Base block
Base constructor!
Derived block!
Derived constructor!

posted @ 2020-12-17 02:39  上杉家主-上杉绘梨衣  阅读(85)  评论(0编辑  收藏  举报