繼承,抽象類,初始化屬性執行順序問題

2021-09-02 04:14:32 字數 841 閱讀 8667

先看**

package com.digisky.ex;

/** * 父類

* * @author jason yang

* @version 1.0 2014-8-4下午10:18:13

*/public abstract class f

public abstract void setid(int id);

public abstract void setname(string id);

}

package com.digisky.ex;

/** * 子類

* * @author jason yang

* @version 1.0 2014-8-4下午10:18:09

*/public class s extends f

public string getname()

public void setname(string name)

@override

public void setid(int id)

public static void main(string args)

}

大家認為最後的列印結果是多少呢?

最後打列印結果是

id=1

name=子類

我的預期是1和父類,因為父類呼叫後把子類初始化的name覆蓋了,結果我錯了。

最總發現如果子類有初始化值,子類會把父類之前設定的值覆蓋,然後id並沒有進行覆蓋(如果id初始化為0的話)

各位大神多多指導,這件事情說明我繼承等底層知識還不夠好啊。。。

類初始化順序執行結果

以下程式執行結果是 class y x x new x static static int i 11 static class x static static int i 1 static public class z extends y public z x x new x static stat...

類初始化順序

類初始化時,jvm會先初始化所有 1,靜態屬性,靜態例項,靜態塊。2.新建例項 靜態或非靜態 時會先執行所有非靜態屬性和構造塊 非靜態屬性和構造塊執行級別相同,誰前誰先 然後構造方法。注意 1 靜態 塊不能存在於任何方法體內。2 靜態 塊不能直接訪問靜態例項變數和例項方法,需要通過類的例項物件來訪問...

類初始化順序

類初始化順序 1.靜態構造塊最先執行,並只執行一次 2.成員變數執行,但靜態成員變數早於靜態塊執行 3.構造塊從上至下依次執行 4.構造方法執行 父類早於子類 父類靜態構造塊 子類靜態構造塊 父類成員變數 父類構造塊 父類構造方法 子類成員變數 子類構造塊 子類構造方法 靜態成員變數先於靜態塊執行 ...