我有一個基類有兩個構造函數:默認構造函數和參數化構造函數。另一個類繼承自該基類,它只有一個默認構造函數。我如何從派生類調用基類的參數化構造函數?如果派生類沒有參數化構造函數,我該如何從派生類調用基類的參數化構造函數?
3
A
回答
8
這不是完全清楚你的問題是什麼,但我懷疑你要麼需要一個明確參數的構造函數添加到您的子類:
// Parameterless child constructor calling parameterized base constructor
public Child() : base("foo", "bar") {
}
或同時添加參數和參數的一個:
public Child() {
}
public Child(string foo, string bar) : base(foo, bar) {
}
注意構造不繼承 - 所以僅僅因爲一個基類公頃一個特定的構造函數簽名並不意味着你可以使用該簽名實例化一個類。孩子班必須自己提供。
任何編譯器提供的無參數構造函數將始終調用其基類的無參數構造函數。
2
這樣的事情?
class Parent
{
public Parent(){}
public Parent(string s) {}
}
class Child : Parent
{
public Child() : base("42") { }
}
1
在這裏你去:
// Parent class
class Parent
{
public Parent()
{
// Paremeterless constructor
}
public Parent(string a, int b)
{
// Paremterised constructor
}
}
// Child class
class Child : Parent
{
public Child()
:base("hi", 10)
{
// Parameterized constructor of the base class is invoked
}
}
相關問題
- 1. 如何從無參數派生類調用參數化基類構造函數?
- 2. 從基類構造函數調用派生類的虛函數?
- 3. 派生類構造函數調用
- 4. 基類構造函數在派生類構造函數之前真的調用
- 5. 從調用派生類的基類構造函數在Java中
- 6. C# - 使所有派生類調用基類構造函數
- 7. 如果基類構造函數不是constexpr,我可以構造派生類constexpr的構造函數嗎?
- 8. 基類如何可以禁用派生類的構造函數
- 9. 從派生類構造函數初始化基類沒有複製構造函數
- 10. 從派生類構造函數傳遞參數到基類構造函數的使用
- 11. 傳遞參數給基類構造函數,同時創造派生類對象
- 12. C#繼承:當我調用派生類構造函數時如何調用基類構造函數
- 13. 初始化派生類的構造函數中沒有默認構造函數的基類
- 14. 關於基類和派生類的構造函數調用
- 15. 派生類調用錯誤的基類構造函數
- 16. 在C++中調用的基類和派生類構造函數
- 17. 派生類中的VB.NET構造函數
- 18. 派生類的構造函數(Java)
- 19. 派生類的python構造函數
- 20. 當派生類構造函數初始化列表時,基類沒有默認構造函數
- 21. 在派生類中調用基類構造函數
- 22. 在派生類中調用基類構造函數
- 23. 在派生類的構造函數中初始化超類
- 24. 如何從派生類複製構造函數調用基類複製構造函數?
- 25. 從派生類數組中初始化基類非默認構造函數
- 26. 從派生構造函數調用基類方法
- 27. 從派生類調用重載基構造函數
- 28. 我不希望派生類繼承基類的構造函數
- 29. 在派生類的函數中調用基類的構造函數
- 30. 如何從派生類訪問內部類構造函數?