如果某個類沒有提供任何構造函數,編譯器將提供一個默認構造函數,該構造函數又調用超類的無參數。爲什麼要調用超類的無參數構造函數?調用超類的參數構造函數
0
A
回答
4
要初始化超(繼承)該類別的一部分
2
這樣就可以初始化超類的屬性,以及。
1
是否有意義的對象的構造函數只有部分構造對象?
0
它是子類實例與其超類的「is-a」關係的一部分。如果SpottedFoo
是Foo
的子類(例如,每個SpottedFoo
「是-a」Foo
),則應當調用Foo
構造函數。
否則,如果由Foo
構造函數執行的初始化(私有或不是)被跳過,那麼SpottedFoo
不能保證它可以像Foo
那樣操作。
這是實現繼承協議的一部分:每個子類實例必須能夠像其超類的任何其他成員一樣行事。這是Liskov substitution principle.
相關問題
- 1. Scala:調用超類的構造函數
- 2. C++調用具有計算參數的超類構造函數
- 3. 調用多個超類構造函數
- 4. 無參數構造函數調用2參數構造函數
- 5. Java:如何調用子類構造函數內的超類構造函數?
- 6. 調用超類的構造函數的MATLAB超類
- 7. 構造函數調用具有參數的構造函數
- 8. 調用超類或只是setTitle的超類構造函數?
- 9. 參數類構造函數
- 10. 在調用超類的構造函數之前解析子類中的參數
- 11. 從參數化構造函數調用默認構造函數
- 12. 從C#中的參數化構造函數調用無參數構造函數?
- 13. 如何通過子類調用超類的參數化構造函數?
- 14. 從grandchild類調用超類構造函數,調用父類或祖父類構造函數?
- 15. 用不同的參數在python中調用超類的構造函數
- 16. 我如何使用Javascript中的參數調用超類的構造函數?
- 17. 使用Closure作爲超類構造函數的參數
- 18. 使用超類的構造函數?
- 19. 在構造函數中調用類成員的構造函數
- 20. 在構造函數中調用不同類的構造函數?
- 21. 從不同類的構造函數調用構造函數
- 22. Java構造函數超級參數
- 23. 從子類構造函數調用超級構造函數是否在內存中創建超類的對象?
- 24. 反思 - 調用構造函數參數
- 25. 參數構造函數調用
- 26. 調用超類的constuctor兩次在子類的構造函數
- 27. 超類的Java子類構造函數
- 28. 在C調用超級構造函數#
- 29. Python調用超級構造函數
- 30. 子類調用超類的構造函數
你的第一句話並不完全準確。編譯器將只**提供一個默認的無參數構造函數**如果你自己沒有提供任何構造函數**。只要添加構造函數,無論它接受多少個參數,默認的no-arguments構造函數都不會由編譯器生成。 – ivantod 2011-12-20 18:00:23
@ivantod我同意你的意見....我已經糾正了它.. – Rekha 2011-12-20 18:01:42
也爲了安全,如果超級類沒有沒有參數構造函數呢? – Stefan 2011-12-20 18:51:34