我现在想知道:当我需要传递参数和/或需要构造函数内的附加功能时,我是否需要创建自己的构造函数?是否还有其他情况依赖默认构造函数会出现问题? private MenuIterator() { menuIterator = menu.iterator(); calculateNumMenuItems(); }
3 回答
扬帆大鱼
TA贡献1799条经验 获得超9个赞
当您需要为类执行某种设置并且字段初始化还不够时,您就需要一个构造函数。您描述的构造函数没有任何意义,因为您的构造函数无法获取menu
(并且private
修饰符阻止您new MenuIterator()
以通常的方式调用)。
侃侃无极
TA贡献2051条经验 获得超10个赞
本质上,如果您提供任何构造函数(甚至是无参数构造函数),将不再为您提供默认构造函数。
如果您需要执行除调用类的超类构造函数之外的任何操作,则需要提供自己的构造函数。
慕慕森
TA贡献1856条经验 获得超17个赞
如果您需要构造函数不是公共的,您还需要一个显式构造函数。如果您希望类的客户端通过静态工厂方法获取实例而不是直接使用构造函数,则属于这种情况。单例模式只是用于获取实例的静态方法的多种用途之一。
我不会太担心。尽管您的讲师有一个带有构造函数的良好解决方案,但您很可能也有一个没有构造函数的良好解决方案。编程问题总是可以通过不止一种方法来解决。
添加回答
举报
0/150
提交
取消