很多人对Java程序初始化顺序充满疑惑,不知道是先执行初始化块还是先执行构造函数。这里给出结论:(执行顺序从上到下依次进行)
第一、父类静态块
第二、子类静态块
第三、父类块方法
第四、父类构造方法
第五、子类块方法
第六、子类构造方法
测试代码如下:
package testmain;
class Parent{
public Parent(){
System.out.println("调用父类构造方法!");
}
{
System.out.println("调用父类块初始化方法");
}
static{
System.out.println("调用父类静态块初始化方法。");
}
}
public class TestMain extends Parent{
public TestMain(){
System.out.println("调用子类构造方法。");
}
{
System.out.println("调用子类块初始化方法");
}
static{
System.out.println("调用子类静态块初始化方法");
}
public static void main(String[] args){
TestMain test = new TestMain();
}
}