我現在想知道:當我需要傳遞參數和/或需要構造函數內的附加功能時,我是否需要創建自己的構造函數?是否還有其他情況依賴默認構造函數會出現問題?? ? private MenuIterator() {? ? ? ? menuIterator = menu.iterator();? ? ? ? calculateNumMenuItems();? ? }
3 回答
揚帆大魚
TA貢獻1799條經驗 獲得超9個贊
當您需要為類執行某種設置并且字段初始化還不夠時,您就需要一個構造函數。您描述的構造函數沒有任何意義,因為您的構造函數無法獲取menu(并且private修飾符阻止您new MenuIterator()以通常的方式調用)。
侃侃無極
TA貢獻2051條經驗 獲得超10個贊
本質上,如果您提供任何構造函數(甚至是無參數構造函數),將不再為您提供默認構造函數。
如果您需要執行除調用類的超類構造函數之外的任何操作,則需要提供自己的構造函數。
慕慕森
TA貢獻1856條經驗 獲得超17個贊
如果您需要構造函數不是公共的,您還需要一個顯式構造函數。如果您希望類的客戶端通過靜態工廠方法獲取實例而不是直接使用構造函數,則屬于這種情況。單例模式只是用于獲取實例的靜態方法的多種用途之一。
我不會太擔心。盡管您的講師有一個帶有構造函數的良好解決方案,但您很可能也有一個沒有構造函數的良好解決方案。編程問題總是可以通過不止一種方法來解決。
添加回答
舉報
0/150
提交
取消
