直接举例说明,看下面程序和结果。
class HelloA{
//父类构造函数
public HelloA() {
System.out.println("HelloA");
}
//父类块
{System.out.println("I am A");}
//父类静态块
static {
System.out.println("static A");
}
}
public class HelloB extends HelloA{
//构造函数
public HelloB(){
System.out.println("HelloB");
}
//块
{System.out.println("I am B");}
//静态块
static {
System.out.println("static B");
}
public static void main(String[] args) {
//初始化子类HelloB
new HelloB();
}
}
运行结果:
static A
static B
I am A
HelloA
I am B
HelloB
所以结论是:在程序中,实例化一个类对象的时候,运行顺序为:
1.父类静态块
2.子类静态块
3.父类块
4.父类的构造器
5.子类块
6.子类的构造器