我正在学习编程,虽然我觉得我对编程有很好的了解(多年来一直在编写
PHP,
Javascript等),但我从未潜入过OOP世界.因此,我要求对我所处的情况作出一般性回答.我知道总会有一些例外情况,但我在这种情况下寻找最正确的方法.
好的,所以我有两个课程,Game和GameGraphics. GameGraphics将创建一个Game对象并使用它拥有的所有方法.我们最近了解到一个类的所有变量都应该是私有的,因此GameGraphics通过getter和setter访问Game中的所有变量.
但是,当我想在Game类中访问Game的变量时,我应该使用公共方法,还是直接访问变量?对此最正确的方法是什么?
如果重要的话,我正在用Java开发.请原谅我缺乏OOP经验.
最佳答案 使用访问器方法(getter和setter)访问其他类的变量的两个主要原因是
>将访问者呈现为界面成员的能力,以及
>覆盖子类中的访问器的能力.
可读性的轻微下降是为这些优势付出的合理代价,因为它们可以让您封装类的逻辑,从而更加严格地控制您.
当涉及到私有方法时,这些优点都不适用:它们无法实现接口方法,也无法覆盖它们.实际上,Java编译器通常会完全优化它们,尤其是更简单的算法.
这就是为什么我建议直接使用实例变量,而不是添加一个无助于可读性的额外层,而是由编译器进行优化.