public class Test2 {
    private String name = "aa";
    private int age = 2;
    public Test2() {
        age = 1000;
    }
    public static  void main(String[] args) {
        Test2 t = new Test2();
        System.out.println(t.name +  t.age);
    }
}

通过debug跟中,在构造方法中的内容执行之前,先执行了类属性的赋值,然后才执行的构造方法中的赋值。

初始化子类之前要初始化父类

public class Test2 extends Parent{
    private String name = "aa";
    private int age = 2;
    public Test2() {
        age = 1000;
    }
    public static  void main(String[] args) {
        Test2 t = new Test2();
        System.out.println(t.name +  t.age);
        t.test();
    }
}


class Parent {
    private int num = 1;
    public Parent() {
        System.out.println("parent");
    }
    public void test() {
        System.out.println("parent test");
    }
}

debug这个执行过程,先执行父类中的属性初始化,然后父类的构造函数,接着子类的属性初始化,子类的构造函数。
在Test2中添加个类属性
static String school = “bbb”;
debug main之前这个属性就已经被加载了。