Java中 类、变量、块、构造函数等的初始化顺序

class Parent {

    private static String parentStaticField = "父类 静态变量";

    static {
        System.out.println(parentStaticField);
        System.out.println("父类 静态语句块");
    }

    private String parentField = "父类 实例变量";

    {
        System.out.println(parentField);
        System.out.println("父类 普通语句块");
    }

    public Parent() {
        System.out.println("父类 构造函数");
    }

}

public class Child extends Parent {

    private static String childStaticField = "子类 静态变量";

    static {
        System.out.println(childStaticField);
        System.out.println("子类 静态语句块");
    }

    private String childField = "子类 实例变量";

    {
        System.out.println(childField);
        System.out.println("子类 普通语句块");
    }

    public Child() {
        System.out.println("子类 构造函数");
    }

    public static void main(String[] args) {
        new Child();
    }

}

   run:

   Java中 类、变量、块、构造函数等的初始化顺序

  

Java中 类、变量、块、构造函数等的初始化顺序