根據Joshu Bloch的Effective Java,「僅提供靜態工廠方法的主要缺點是沒有公共或受保護構造函數的類不能被子類化。」有人能解釋一下這是什麼意思?特別是粗體字。如果提供了一個靜態工廠方法,那麼帶有私有構造函數的類不能被正確的子類化?靜態工廠方法
Q
靜態工廠方法
0
A
回答
3
只提供靜態工廠方法是,沒有公開 或受保護構造函數的類不能被子類化。
每當調用子類的構造函數時,父類的構造函數也會被調用。在沒有受保護或公共建設者的情況下,子類別或擴展類別是沒有意義的。因此缺點。
+3
減去_make no sense_和更多_won't compile_。 –
0
Java需要派生類來確保繼承的字段將被正確初始化。它通過在構造函數調用開始時創建超類的構造函數來完成。
這樣的代碼看起來應該像
class Derived class Parent{
public Derived(){
super();//this will be added automatically by compiler
//or super(arguments) if you want to use constructor with arguments
}
}
但如果超不作它的構造函數訪問(這是女貞)的任何構造的派生類中不能添加super
電話。這意味着我們不能爲構造函數創建有效的代碼,並且由於所有類都必須至少有一個構造函數派生類無法編譯。
相關問題
- 1. 靜態工廠方法vs工廠
- 2. AutoMapper靜態工廠方法
- 3. 靜態工廠方法(Spring)
- 4. 靜態工廠方法
- 5. Autofac工廠靜態方法
- 6. 靜態工廠方法
- 7. 創建一個從靜態工廠方法工廠,然後調用靜態工廠方法上的ID
- 8. Spring 3 @Component和靜態工廠方法
- 9. 靜態工廠方法查詢
- 10. 繼承和靜態工廠方法
- 11. 靜態接口工廠方法[Java 8]
- 12. 靜態工廠方法問題!
- 13. Java 8接口 - 靜態工廠方法
- 14. EJB的靜態工廠方法
- 15. 使用枚舉作爲工廠vs靜態工廠方法
- 16. 靜態工廠方法和靜態對象的內存泄漏
- 17. 如何使靜態工廠方法不是靜態實例?
- 18. 內部工廠的靜態工廠方法網關 - 代碼異味?
- 19. Java的泛型和靜態工廠方法 - 語法
- 20. 通用靜態工廠
- 21. 工廠方法:靜態函數VS C++中的非靜態函數實現
- 22. 非靜態方法尋呼機::廠()不應該叫靜態
- 23. 靜態和非靜態方法工作
- 24. 如何用靜態工廠方法創建抽象類?
- 25. 靜態工廠避免重複對象的方法
- 26. 從靜態類工廠方法中獲取屬性
- 27. 使用靜態方法的輔助類的工廠?
- 28. 在靜態工廠方法中分配事件處理委託
- 29. 的Java:靜態工廠方法和線程安全
- 30. 如何通過靜態工廠方法返回對象?
改寫了這個問題。 – Kishore