我们先看一段代码:
public class TestExtend {
public static void main(String[] args) {
C2 c2 = new C2();
}
}
class F{
static {
System.out.println("Father静态代码块");
}
{
System.out.println("Father构造代码块");
}
F(){
System.out.println("Father构造方法");
}
}
class C1 extends F{
static {
System.out.println("Child1静态代码块");
}
{
System.out.println("Child1构造代码块");
}
C1(){
System.out.println("Child1构造方法");
}
}
class C2 extends C1{
static {
System.out.println("Child2静态代码块");
}
{
System.out.println("Child2构造代码块");
}
C2(){
System.out.println("Child2构造方法");
}
}
运行结果(上图):
所以我们得出结论:
类加载的顺序是:
1、父类的静态代码块
2、子类的静态代码块
3、父类的构造代码块
4、父类的构造方法
5、子类的构造代码块
6、子类的构造方法