java – 使用public getters / setters访问同一个类中的私有变量,或直接访问变量

我正在学习编程,虽然我觉得我对编程有很好的了解(多年来一直在编写
PHP,
Javascript等),但我从未潜入过OOP世界.因此,我要求对我所处的情况作出一般​​性回答.我知道​​总会有一些例外情况,但我在这种情况下寻找最正确的方法.

好的,所以我有两个课程,Game和GameGraphics. GameGraphics将创建一个Game对象并使用它拥有的所有方法.我们最近了解到一个类的所有变量都应该是私有的,因此GameGraphics通过getter和setter访问Game中的所有变量.

但是,当我想在Game类中访问Game的变量时,我应该使用公共方法,还是直接访问变量?对此最正确的方法是什么?

如果重要的话,我正在用Java开发.请原谅我缺乏OOP经验.

最佳答案 使用访问器方法(getter和setter)访问其他类的变量的两个主要原因是

>将访问者呈现为界面成员的能力,以及
>覆盖子类中的访问器的能力.

可读性的轻微下降是为这些优势付出的合理代价,因为它们可以让您封装类的逻辑,从而更加严格地控制您.

当涉及到私有方法时,这些优点都不适用:它们无法实现接口方法,也无法覆盖它们.实际上,Java编译器通常会完全优化它们,尤其是更简单的算法.

这就是为什么我建议直接使用实例变量,而不是添加一个无助于可读性的额外层,而是由编译器进行优化.

点赞