Java基础之类的加载顺序
public class TestClassLoad {
public static void main(String args[]){
new Son();
}
}
class Parent{
static{
System.out.println("1.我是父类静态代码块");
}
{
System.out.println("2.我是父类代码块");
}
public Parent(){
System.out.println("3.我是父类构造函数");
}
}
class Son extends Parent{
static{
System.out.println("4.我是子类静态代码块");
}
{
System.out.println("5.我是子类代码块");
}
public Son(){
System.out.println("6.我是子类构造函数");
}
}
打印执行结果前,不妨先想下结果,
1.我是父类静态代码块 4.我是子类静态代码块 2.我是父类代码块 3.我是父类构造函数 5.我是子类代码块 6.我是子类构造函数
遵循三个原则
- 静态代码块优先,且执行一次
- 父类优先子类
- 非静态块优于构造函数
再试试,看看结果如何
|