我正在学习编程,虽然我觉得我对编程有很好的了解(多年来一直在编写PHP,Javascript等),但我从未潜入过OOP世界。因此,我要求对我所处的情况作一般性答案。我知道总会有一些例外情况,但我在这种情况下寻找最正确的方法。
好的,我有两个班,Game
和GameGraphics
。 GameGraphics
将创建Game
的对象并使用它拥有的所有方法。我们最近了解到一个类的所有变量都应该是私有的,因此Game
中的所有变量都由GameGraphics
通过getter和setter访问。
但是,当我想访问Game
类中的Game
变量时,我应该使用公共方法,还是直接访问变量?对此最正确的方法是什么?
如果重要的话,我正在用Java开发。请原谅我缺乏OOP经验。
答案 0 :(得分:1)
我建议您始终使用存取方法。稍后您的程序将更容易调试。
让我给出一个相当常见的场景。假设您注意到属性如何意外更新,并且您想知道代码中可能更新属性的位置:
如果您一直使用setter来更新值。您只需在整个项目中搜索该字段的setter方法一次即可完成。代码中可能存在 no 其他位置,其中值将更新。甚至不在课堂内部(记住:除了访问者之外没有直接的现场访问)。
如果您同时使用setter方法和直接字段访问更新值, 您必须两次搜索您的项目。首先,通过setter方法。第二,由现场。请注意,从第二个列出的所有结果可能会混淆(该属性可能存在于搜索结果中,因为它正在访问或已更新)
此外,如果要在更新或访问属性时进行一些调试并检查某些值,则可以将断点放在其setter或getter方法中。简单。您不需要将断点放在其他地方。
答案 1 :(得分:0)
如果你只是学习OOP,那么一定要坚持通过公共方法暴露的私人成员。这并不是说公共领域都很糟糕,但要了解何时使用,你必须详细研究这两种方法。
在类中,私有成员几乎总是直接访问,这肯定是第一选择 - 封装的全部内容是围栅内的代码与代码之外的代码的分离。