子類繼承父類 建構函式訪問問題

2022-04-30 17:24:12 字數 915 閱讀 3418

using system;

using system.collections.generic;

using system.text;

namespace statictest

}class bird

protected bird()

}class parrot:bird

public parrot()}}

目前的**執行結果就是:

鸚鵡的靜態構造函式呼叫了

鳥類的靜態構造函式呼叫了

乙個小鳥被建立了

乙個鸚鵡貝建立了

因為parrot類 繼承了bird 類 所以當呼叫 parrot 類的建構函式的時候首先要先呼叫父類的建構函式,呼叫完以後才呼叫本類的建構函式,如果父類的建構函式是private 的話就會出錯。當建立物件的時候首先要呼叫類的靜態建構函式。

再來看看這個**

using system;

using system.collections.generic;

using system.text;

namespace statictest

}class bird

protected bird()

protected int _weight;

public bird(int weight)

}class parrot:bird

public parrot()

private string _name;

public parrot(string name, int weight)

: base(weight)

體重是",name,weight);}}

}這段**用了帶引數的建構函式,當定義了帶引數的建構函式的時候 預設的建構函式就失效了 用base()來呼叫父類的函式,用於對物件的賦值。

C 模板類繼承,成員訪問問題

c 中宣告乙個模板類及子類,在子類中如果需要訪問父類的protected變數,需要使用父類的類作用域限定符,否則會報 identifier not found 錯誤。例如 templateclass a template 模板的繼承,基類需要指定模板引數 class b public a 模板函式的...

子類繼承父類時建構函式的相關問題

子類物件中包含乙個父類物件在子類物件在建立過程中,先呼叫父類構造方法 先建立出內建的父類物件 然後再建立出自己的物件。所以子類構造時,會先呼叫父類的構造方法,如果你在子類構造方法中不顯示指明呼叫父類的哪個構造方法,系統會給你預設加上super 這時父類必須有乙個無參的構造方法,不然會報錯。其實咋寫都...

子類繼承父類,必須宣告父類的建構函式

class entity def init self,object type print parent class init called self.object type object type def get context length self raise exception get con...