java靜態初始化塊、例項初始化塊
阿新 • • 發佈:2019-02-08
public class Demo1 {
public Demo1() {
System.out.println("父類構造器");
}
static{
System.out.println("父類靜態初始化塊");
}
{
System.out.println("父類例項初始化塊");
}
public void method() {
System.out.println("父類方法");
}
}
輸出結果:public class Demo2 extends Demo1{ public Demo2() { System.out.println("子類構造器"); } static { System.out.println("子類靜態初始化塊"); } { System.out.println("子類例項初始化塊"); } public static void main(String[] args) { new Demo2().method(); } }
父類靜態初始化塊
子類靜態初始化塊
父類例項初始化塊
父類構造器
子類例項初始化塊
子類構造器
父類方法
由此可知:
1、當例項化子類的時候,先載入父類,靜態初始化塊在類載入的時候就被載入,因此先輸出:父類靜態初始化塊。
2、載入完父類時載入子類,接著輸出:子類靜態初始化塊。
3、繼續載入父類,輸出:父類例項化初始化塊。
4、載入父類的構造器,輸出:父類構造器。
5、載入子類,輸出:子類例項化快。
6、載入子類構造器,輸出:子類構造器。
7、呼叫父類的方法,輸出:父類方法。