執行順序:對於靜態變量、靜態初始化塊、變量、初始化塊、構造器,它們的初始化順序以此是(靜態變量、靜態初始化塊)>(變量、初始化塊)>構造器
第一種情形
父類和子類 都有動態代碼塊和靜態塊時
class Father {
{
System.out.println("父類構造塊");// 3
}
static {
System.out.println("父類靜態塊");// 1
}
}
public class Lianxi14 extends Father {
{
System.out.println("子類構造塊");// 4
}
static {
System.out.println("子類靜態塊");// 2
}
public static void main(String[] args) {
new Lianxi14();
}
輸出結果爲:
父類靜態塊
子類靜態塊
父類構造塊
子類構造塊
第二種情形
在父類和子類中加入構造函數
class Father {
{
System.out.println("父類構造塊");// 3
}
static {
System.out.println("父類靜態塊");// 1
}
Father() {
System.out.println("父類構造函數");//4
}
}
public class Lianxi14 extends Father {
{
System.out.println("子類構造塊");// 5
}
static {
System.out.println("子類靜態塊");// 2
}
Lianxi14() {
System.out.println("子類構造函數");//6
}
public static void main(String[] args) {
new Lianxi14();
}
}
執行順序如下:
父類靜態塊
子類靜態塊
父類構造塊
父類構造函數
子類構造塊
子類構造函數