【发布时间】:2012-10-11 05:32:12
【问题描述】:
我已经编程了一段时间了,我有一个关于公共方法使用的问题。我正在开发一个自动售货机程序,我有一个私有方法setUpMachine() 来初始化游戏并设置对象。我有另一个私有方法startMachine() 启动游戏并提示用户输入。然后它将输入传递给另一个私有方法checkInput(),该方法检查输入是否有效......但这不是我遇到的“问题”,而是我没有做某事的奇怪感觉正确。对于我的第三种方法checkInput(),我需要访问第一种方法setUpMachine() 中的对象。问题是我有很多对象(糖果、薯条、苏打水、饼干),并且将它们全部传递给检查周边似乎并不正确。换句话说,这样做:
checkInput(FoodType candy, FoodType chips, FoodType soda, FoodType cookie)
似乎不对。这是否意味着,如果我使用私有方法,每次我想使用它们时都必须传递对象?我读到公开方法是不好的做法。
对此的解释会很好,与其说是告诉我我的编码效率低下的解释,不如说是描述何时和如何使用私有方法的解释,或者如果有其他方法可以做到这一点。
【问题讨论】:
-
如果这些对象将出现在类的所有方法中(或大部分方法中),那么您可以将它们设置为类中的属性,并将它们提供给构造函数上的实例。跨度>
-
所以如果我要在整个类中使用对象,可以在 setUpMachine() 方法之外初始化对象,而只是在类中?那么 setUpMachine() 方法还有必要吗?
-
您也可以在
setUpMachine中设置类属性。这将取决于您的设计,但 IMO 最好在构造函数中执行此操作,以避免在您之前设置它们之前在方法中使用这些属性。 -
是的,它们可以是类上的静态变量或实例变量——
private方法不能在类本身之外调用,但可以访问类的所有属性。更多信息 -protected可在包中访问,public可全局访问。 -
好的,这真的很清楚。谢谢你:)
标签: java object methods private