我在寫一個抽象基類。我想要從它繼承的所有類繼承一個基本上爲所有類執行相同操作的構造方法。這可能嗎?如何繼承子類的構造函數
1
A
回答
0
在你的派生類的構造函數,你需要調用你的基類的構造像這樣:
base(param1,param2,...)
如果不顯式調用基類的構造,在基類的默認構造函數將被調用,如果一個存在。如果沒有,你會得到一個編譯錯誤。
2
做你的構造保護會做的東西
public abstract class A
{
protected A(string v) { V = v; }
public string V { get; protected set; }
}
public class AA : A
{
public AA(string v) : base (v) {}
}
2
如果抽象基類有一個默認的構造函數(即不帶參數的構造函數),它會自動由派生類的構造函數調用,除非他們顯式調用基類的另一個構造函數。
abstract class B
{
protected B()
{
...
}
protected B(object foo)
{
...
}
}
class D : B
{
public D()
: base() // not actually necessary, since it's called implicitly
{
}
public D(object foo)
: base(foo)
{
}
}
+0
也許你可以用派生類的需求來完成答案,如果基類沒有默認的構造函數 – 2012-03-16 14:00:57
相關問題
- 1. Java:繼承構造函數到子類
- 2. 將繼承構造子類的構造參數傳遞給繼承子類
- 3. 類的繼承和構造函數
- 4. 繼承類中的構造函數C++
- 5. 繼承虛基類的構造函數
- 6. C++繼承類的構造函數
- 7. 繼承非構造函數
- 8. 構造函數和繼承
- 9. Java繼承 - 構造函數
- 10. Java構造函數繼承?
- 11. 構造函數和繼承?
- 12. 構造函數和繼承
- 13. 構造函數繼承
- 14. Java繼承/構造函數
- 15. C#繼承構造函數
- 16. 繼承類和構造函數
- 17. 從超類繼承構造函數?
- 18. TypeScript類繼承構造函數混淆
- 19. 從基類繼承構造函數?
- 20. 構造函數的超類與子類繼承C++
- 21. 如何從超類繼承構造函數的部分到java中的子類
- 22. 如何定義繼承內部類的子類的構造函數?
- 23. 調用unique_ptr子類的繼承模板構造函數
- 24. 如何指定繼承類的構造函數定義?
- 25. 如何爲我繼承的類聲明構造函數?
- 26. 在java中調用繼承構造函數的構造函數
- 27. 一個子類可以繼承構造函數嗎?
- 28. 初始化子類構造函數:繼承
- 29. 如何從非直接父級基類繼承構造函數
- 30. 刪除複製構造函數break繼承構造函數
我認爲OP試圖避免實現具有相同簽名的構造函數。你不能在C#中繼承構造函數。只能從基地調用那些(就像你在代碼中那樣) – 2012-03-16 13:57:51
就我個人而言,我認爲這是C#最大的失敗之一。在基類中聲明的每個公共方法都可以在派生類中自動使用,但是所有構造函數都需要明確定義。每次我必須編寫簡單地調用基本實現的相同構造函數時,我都會詛咒C#團隊。 – adelphus 2012-03-16 14:17:02