類的載入順序

2021-06-21 22:25:45 字數 1383 閱讀 6743

直接上**,熱乎的:

package test;

/**有父類的情況

1. 載入父類

1.1 為靜態屬性分配儲存空間並賦初始值

1.2 執行靜態初始化塊和靜態初始化語句(從上至下)

2. 載入子類

2.1 為靜態屬性分配儲存空間

2.2 執行靜態初始化塊和靜態初始化語句(從上至下)

3. 載入父類構造器

3.1 為例項屬性分配存數空間並賦初始值

3.2 執行例項初始化塊和例項初始化語句

3.3 執行構造器內容

4. 載入子類構造器

4.1 為例項屬性分配存數空間並賦初始值

4.2 執行例項初始化塊和例項初始化語句

4.3 執行構造器內容

5 回到main()

內部類的載入過程也一樣

*/public class test

}class a

// 6

private p p2 = new p("a--p2");

static

");} public static class c

// 16

private p p2 = new p("c--p2");

static

");} }

public void geti()

/*** private的final方法

*/private final void checkfinal()

}class b extends a

// 10

public p p2 = new p("b -- p2");

static

");} public void geti()

/*** 此時是看不到父類的私有方法所以不會報錯。

*/private void checkfinal()

}class p }/*

1 a--p3

2 a--static

3 b -- p3

4 b -- static

5 a--p1

6 a--p2

7 a8 a()

9 b --p1

10 b -- p2

11 b

12 b()

13 c--p3

14 c--static

15 c--p1

16 c--p2

17 c

18 c()

19 **********==

20 son i:20

21 1

22 **********==

23 son i:20

24 20

*/

類的載入順序

類載入的順序 1.載入靜態成員 塊 先遞迴地載入父類的靜態成員 塊 object的最先 再依次載入到本類的靜態成員。同乙個類裡的靜態成員 塊,按寫 的順序載入 靜態 塊和靜態成員誰在前面就先載入誰 如果其間呼叫靜態方法,則呼叫時會先執行靜態方法,再繼續載入。同乙個類裡呼叫靜態方法時,可以不理會寫 的...

類的載入順序

初始化過程 1.初始化父類中的靜態成員變數和靜態 塊 2.初始化子類中的靜態成員變數和靜態 塊 3.初始化父類的普通成員變數和 塊,再執行父類的構造方法 4.初始化子類的普通成員變數和 塊,再執行子類的構造方法 class x class y public class zextends x publ...

類的載入順序

public class base public void callname static class sub extends base public static void main string args 執行base b new sub 時由於多型 b編譯時表現為base類特性,執行時表現為s...