隱式超級構造函數示例()對於默認構造函數是不可見的。必須定義一個顯式構造函數。是因爲我定義了一個私有構造函數,然後嘗試繼承其他類中的類?使用私有構造函數繼承一個類
回答
這是因爲我定義了一個私有構造函數,然後嘗試繼承其他類中的類?
是的。如果你的只有構造函數是私有的,那麼你不能創建該類的子類,因爲沒有可訪問的構造函數可以鏈接到 - 將嵌套類留在一邊(在可訪問性發生變化的地方)。
考慮讓你的構造函數受到保護,如果你真的想要能夠繼承原始類。
+1你可以有嵌套的子類。您必須決定是否需要可以從其他類使用的構造函數,例如受保護的,或者你沒有。 –
@PeterLawrey:IIRC在Java中,嵌套子類將無法訪問封閉類的私有構造函數(與C#不同),但是*可能會*使外部類子類成爲具有私有構造函數的嵌套類。 。如果由於其他原因合法。我不想在這裏進入。 –
這在Java的'公共類A編譯就好{ 私營A(){ } 靜態類B擴展A { 私人B(){ } } 靜態C級擴展B { 私人C( ){ } } } ' –
如果你想要子類,那麼你需要從子類的構造函數中顯式地調用超級構造函數,並且由於它是私有的,所以你不能調用它!因此,從被保護的子類創建超級類的構造函數至少可訪問。
- 1. 私有構造函數和繼承(Java)
- 2. 使用私有繼承時繼承基礎構造函數的方法?
- 3. 從C++中的私有模板類繼承構造函數
- 4. 爲什麼你不能從一個構造函數是私有的類繼承?
- 5. 繼承非構造函數
- 6. 構造函數和繼承
- 7. Java繼承 - 構造函數
- 8. Java構造函數繼承?
- 9. 構造函數和繼承?
- 10. 構造函數和繼承
- 11. 構造函數繼承
- 12. Java繼承/構造函數
- 13. C#繼承構造函數
- 14. 繼承類和構造函數
- 15. 類的繼承和構造函數
- 16. 繼承類中的構造函數C++
- 17. 從超類繼承構造函數?
- 18. 繼承虛基類的構造函數
- 19. C++繼承類的構造函數
- 20. Java:繼承構造函數到子類
- 21. TypeScript類繼承構造函數混淆
- 22. 從基類繼承構造函數?
- 23. 通過定義默認私有構造函數使類不可繼承
- 24. 私有變量和繼承構造函數
- 25. 繼承,超級構造函數和私有方法
- 26. 使類構造函數私有
- 27. 沒有默認構造函數 - 繼承
- 28. 用私有構造函數繼承一個類?或者創建一個新的模塊?
- 29. 具有不一致構造函數的多級別類繼承
- 30. 在java中調用繼承構造函數的構造函數
而你的代碼是...? –
如果該類唯一的構造函數是聲明爲'private'的無參數構造函數,則不能有子類。 – afk5min
爲什麼你們投下這樣的問題,如果這對你來說太簡單了,那不適合其他人。 –