類載入順序

2021-06-16 11:44:02 字數 918 閱讀 6130

1.載入靜態成員/**塊: 

先遞迴地載入父類的靜態成員/**塊(object的最先);再依次載入到本類的靜態成員。 

同乙個類裡的靜態成員/**塊,按寫**的順序載入。 

如果其間呼叫靜態方法,則呼叫時會先執行靜態方法,再繼續載入。同乙個類裡呼叫靜態方法時,可以不理會寫**的順序。 

呼叫父類的靜態成員,可以像呼叫自己的一樣;但呼叫其子類的靜態成員,必須使用「子類名.成員名」來呼叫。 

2.載入非靜態成員/**塊:(例項塊在建立物件時才會被載入。而靜態成員在不建立物件時可以載入) 

先遞迴地載入父類的非靜態成員/**塊(object的最先);再依次載入到本類的非靜態成員。 

同乙個類裡的非靜態成員/**塊,按寫**的順序載入。同乙個類裡呼叫方法時,可以不理會寫**的順序。 

但呼叫屬性時,必須注意載入順序。一般編譯不通過,如果能在載入前呼叫,值為預設初始值(如:null 或者 0)。 

呼叫父類的非靜態成員(private 除外),也可以像呼叫自己的一樣。 

3.呼叫構造方法:

先遞迴地呼叫父類的構造方法(object的最先)也就是上溯下行;預設呼叫父類空參的,也可在第一行寫明呼叫父類某個帶參的。 

再依次到本類的構造方法;構造方法內,也可在第一行寫明呼叫某個本類其它的構造方法。 

注意:如果載入時遇到 override 的成員,可看作是所需建立的型別賦值給當前型別。 

其呼叫按多型用法:只有非靜態方法有多型;而靜態方法、靜態屬性、非靜態屬性都沒有多型。 

假設子類override父類的所有成員,包括靜態成員、非靜態屬性和非靜態方法。 

由於構造子類時會先構造父類;而構造父類時,其所用的靜態成員和非靜態屬性是父類的,但非靜態方法卻是子類的; 

由於構造父類時,子類並未載入;如果此時所呼叫的非靜態方法裡有成員,則這個成員是子類的,且非靜態屬性是預設初始值的。

類載入順序

靜態變數 靜態塊 構造塊 建構函式執行順序 先看乙個demo parent類 created by flh on 2017 8 20.public class parent static public static int i getint public static int getint stat...

類載入順序

目錄 一 類載入做了哪些事?二 類載入的順序 三 乙個具體說明的例子 四 類載入前和載入後的執行順序 自 之前沒有進行類載入 1.類載入,同時初始化類中靜態的屬性 賦預設值 2.執行靜態 塊 3.分配記憶體空間,同時初始化非靜態的屬性 賦預設值 4.如果宣告屬性的同時有顯示的賦值,那麼進行顯示賦值把...

類載入器載入順序

先上 public class parent static public parent public static void staticmethod1 public static void staticmethod2 測試類 public static void main string args ...