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...