/**
* 类加载实例的顺序:
* 1、先有字节码才有实例
* 2、字节码只加载一次
* 3、字节码加载同时静态加载
* 4、构造实例之前先调普通方法,再调构造方法
* 5、先有父类才有子类
* (模版到实例,静态先加载)字节码文件就是模版,模版只加载一次
*所以呢,主方法中类加载的顺序是:
* 要实例化son,得有son的字节码,要有son的字节码得有father的字节码
* 有了father的字节码,才有的father的实例,有了father的实例,才有son的实例。
* son.class --> father.class -->father instance --> son instance
* 调实例之前先调普通方法({}扩起来的代码)
*/
class Father{
public Father() {
System.out.println("1111");
}
{
System.out.println("2222");
}
static {
System.out.println("3333");
}
}
class son extends Father{
public son() {
super();
System.out.println("4444");
}
{
System.out.println("5555");
}
static {
System.out.println("6666");
}
}
public class TestStaticSeq {
public static void main(String[] args) {
new son();
System.out.println("===========");
new son();
System.out.println("===========");
new Father();
}
}
结果: