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之前这个属性就已经被加载了。