public class TestDG {
public static void main(String[] args){
new B();
System.out.println("========================再来一次==========");
new B();
}
}
class A{
static{
System.out.println("我是老爸静态初始化块,我第1");
}
{
System.out.println("我是初始化块,我第3");
}
A(){
System.out.println("我是老爸构造器,我第4");
}
}
class B extends A{
static{
System.out.println("我是儿子静态初始化块,我第2");
}
{
System.out.println("我是儿子初始化块,我第5");
}
B(){
System.out.println("我是儿子构造器,我第6");
}
}
执行顺序:静态成员变量初始化—静态函数—非静态成员变量初始化—非静态成员函数初始化—类的构造函数。补充:如果主类有父类或实现接口就先执行父类中的,然后再执行主类
static变量-->static初始化块-->变量-->初始化块-->构造函数
很详细呀!