我試圖理解,但仍然不確定。如果基類中有構造函數,派生類將始終調用它?我知道它們可以覆蓋它(這裏不是正確的術語,我知道 - 我的意思是將代碼添加到它們的構造函數中),但是我假設如果構造函數是在基類中定義的,派生類將始終調用它。真的嗎?構造函數繼承
Q
構造函數繼承
6
A
回答
6
是的,如果有一個無參數的構造函數,它總是會被調用。如果有一個以上的構造函數,你可以選擇一個與base
關鍵字來調用:
class Parent {
public Parent() {}
public Parent(int x) {}
}
class Child : Parent {
public Child(int x) : base(x) {
}
}
如果沒有無參數的構造函數,你會被迫做到這一點:
class Parent {
public Parent(int x) {}
}
class Child : Parent {
// This will not compile without "base(x)"
public Child(int x) : base(x) {
}
}
2
如果在基類中只有一個無參數構造函數,那麼子類構造函數將始終首先調用它。另一方面,如果在基類中定義了其他構造函數,那麼子類將有一個選項調用哪個基構造函數。
相關問題
- 1. 繼承非構造函數
- 2. 構造函數和繼承
- 3. Java繼承 - 構造函數
- 4. Java構造函數繼承?
- 5. 構造函數和繼承?
- 6. 構造函數和繼承
- 7. Java繼承/構造函數
- 8. C#繼承構造函數
- 9. 在java中調用繼承構造函數的構造函數
- 10. 刪除複製構造函數break繼承構造函數
- 11. 繼承構造函數和默認構造函數
- 12. 可變參數構造函數繼承
- 13. 構造函數參數和繼承
- 14. CoffeeScript,原型繼承和構造函數
- 15. C中的繼承和構造函數#
- 16. 實例化繼承構造函數
- 17. 構造函數繼承自我python
- 18. C++只繼承公共構造函數
- 19. C#基礎構造函數繼承
- 20. 移動構造函數和繼承
- 21. 構造函數繼承問題
- 22. 靜態構造函數和繼承
- 23. 繼承類和構造函數
- 24. 繼承和構造函數的錯誤
- 25. 繼承構造函數php 5.2.6
- 26. 用於繼承的C++構造函數
- 27. JavaScript繼承和構造函數屬性
- 28. C++中的繼承構造函數
- 29. Object.create而不是構造函數繼承
- 30. Javascript繼承.call .create和構造函數
不知道我明白了。在第一個例子中,有Child(int x):base(x),所以我猜都會被調用? – Miria 2011-04-03 15:35:05
@Miria:是的。沒有辦法調用* some * base構造函數(例如在第二個例子中,編譯器不會讓你移除'base(x)');使用'base'只是允許你選擇*哪一個*將被調用,以及什麼參數。 – Jon 2011-04-03 15:42:50