Java基础之类的加载顺序
public class TestClassLoad {
public static void main(String args[]){
new Son();
}
}
/**
* 类的加载顺序,遵循三个原则
* 1.静态优先,且一次
* 2.父类优先子类
* 3.非静态块优于构造函数
*/
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.我是子类构造函数
遵循三个原则
- 静态代码块优先,且执行一次
- 父类优先子类
- 非静态块优于构造函数
再试试,看看结果如何