1.載入靜態成員/**塊:
先遞迴地載入父類的靜態成員/**塊(object的最先);再依次載入到本類的靜態成員。
同乙個類裡的靜態成員/**塊,按寫**的順序載入。
如果其間呼叫靜態方法,則呼叫時會先執行靜態方法,再繼續載入。同乙個類裡呼叫靜態方法時,可以不理會寫**的順序。
呼叫父類的靜態成員,可以像呼叫自己的一樣;但呼叫其子類的靜態成員,必須使用「子類名.成員名」來呼叫。
2.載入非靜態成員/**塊:
先遞迴地載入父類的非靜態成員/**塊(object的最先);再依次載入到本類的非靜態成員。
同乙個類裡的非靜態成員/**塊,按寫**的順序載入。同乙個類裡呼叫方法時,可以不理會寫**的順序。
但呼叫屬性時,必須注意載入順序。一般編譯不通過,如果能在載入前呼叫,值為預設初始值(如:null 或者 0)。
呼叫父類的非靜態成員(private 除外),也可以像呼叫自己的一樣。
3.呼叫構造方法:
先遞迴地呼叫父類的構造方法(object的最先);預設呼叫父類空參的,也可在第一行寫明呼叫父類某個帶參的。
再依次到本類的構造方法;構造方法內,也可在第一行寫明呼叫某個本類其它的構造方法。
注意:如果載入時遇到 override 的成員,可看作是所需建立的型別賦值給當前型別。
其呼叫按多型用法:只有非靜態方法有多型;而靜態方法、靜態屬性、非靜態屬性都沒有多型。
假設子類override父類的所有成員,包括靜態成員、非靜態屬性和非靜態方法。
由於構造子類時會先構造父類;而構造父類時,其所用的靜態成員和非靜態屬性是父類的,但非靜態方法卻是子類的;
由於構造父類時,子類並未載入;如果此時所呼叫的非靜態方法裡有成員,則這個成員是子類的,且非靜態屬性是預設初始值的。
java類載入順序
1 父類靜態成員和靜態初始化塊,按在 中出現的順序依次執行。2 子類靜態成員和靜態初始化塊,按在 中出現的順序依次執行。3 父類例項成員和例項初始化塊,按在 中出現的順序依次執行。4 執行父類構造方法。5 子類例項成員和例項初始化塊,按在 中出現的順序依次執行。6 執行子類構造方法。下面提供了有關靜...
java類載入順序
package com.demo description 類載入順序 author fujianyong 2015 2 6上午11 21 37 public class classloadersequence public static void test1 public void test2 pu...
Java 類載入順序
父類 靜態成員變數 父類 static 塊 子類 靜態成員變數 本類 static 塊 父類 構造塊 父類 預設構造方法 子類 構造塊 子類 有參 構造方法。package com.example.demo.basic author grace.pan date 2019 6 17 public c...