类的加载顺序
- 执行父类的 static 代码块和 static 变量初始化,并且执行顺序和代码出现的顺序相关。
- 执行子类的 static 代码块和 static 变量初始化,并且执行顺序和代码出现的顺序相关。
- 执行父类成员变量初始化。
- 执行父类的代码块。
- 执行父类的构造函数。
- 执行子类成员变量初始化。
- 执行子类代码块。
- 执行子类的构造函数。
Parent类
public class Parent {
private String name = "父类";
static {
System.out.println("父类静态代码块。");
}
{
System.out.println(name + "父类代码块。");
}
public Parent() {
System.out.println("父类构造函数。");
}
}
Child类
static {
System.out.println("子类静态代码块。");
}
{
System.out.println("子类代码块。");
}
public Child() {
System.out.println("子类构造函数");
}
测试类
public class Child extends Parent {
private String name = "子类";
static {
System.out.println("子类静态代码块。");
}
{
System.out.println(name + "代码块。");
}
public Child() {
System.out.println("子类构造函数。");
}
}
执行结果