java變數初始化順序

2021-07-09 13:09:09 字數 468 閱讀 1221

子類 son 父類father。

1.先初始化父類的靜態變數或靜態**塊。不分先後,以定義的先後順序為準

2.初始化子類的靜態變數或靜態**塊

3.初始化父類的非靜態變數,執行建構函式

4.初始化子類的非靜態變數,執行建構函式。

比如  father fa = new son()  向上轉型,不用強制型別轉換

fa 呼叫的成員變數是父類的。 如果想呼叫子類的成員變數,可以封裝乙個函式,這個裡面返回成功變數的值即可

fa 呼叫的函式是子類的。 其實呼叫的是子類重寫父類的函式。 如果父類沒有此函式會報錯。

son s = (son)fa,這樣使用也可以。父類的引用指向了子類

father f2 = new father();

son s2 = (son)f2;       // 出錯,子類引用不能指向父類物件

好處:在父類有多個子類時,利用向上轉型減少重複**量

Java 變數初始化順序

tij 第四版在 初始化順序 部分講到,變數定義的先後順序決定了初始化的順序 我認為這句話是不準確的,當然也可能是翻譯者的問題。因為實際上,變數定義的先後順序與初始化順序無關。class cup public class cups cups public static void main strin...

java變數初始化順序

在類的內部,變數定義的先後順序決定了初始化順序,即使變數定義分散在方法定義之外,它們依舊會在任何方法 包括構造器 被呼叫之前得到初始化 其中初始化的順序先是靜態物件,其後是非靜態物件 例如 class cat class dog public class teststatic 執行結果 test.d...

java變數初始化順序

1.變數初始化順序 靜態變數 靜態初始化塊 變數 變數初始化塊 構造器 public class initializationtest 初始化塊 構造器 public initializationtest public static void main string args 列印結果 靜態變數靜態...