使用公共获取器/设置器访问同一类中的私有变量,或直接访问变量

Opt*_*ime 5 java oop

我正在学习编程,尽管我感觉自己在编程方面有丰富的知识(多年编写PHP,Javascript等),但我从未涉足OOP。因此,我想就自己所处的情况提供一个一般性的答案。我知道总是会有一些例外,但是在这种情况下,我正在寻找最正确的方法。

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

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

如果这很重要,我正在用Java开发。并且请原谅我缺乏OOP经验。

das*_*ght 1

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

  • 将访问器呈现为接口成员的能力,以及
  • 重写子类中的访问器的能力。

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

当涉及私有方法时,这些优点都不适用:它们不能实现接口方法,并且不能被重写。事实上,Java 编译器通常会完全优化它们,尤其是那些更简单的。

这就是为什么我建议直接使用实例变量,而不是添加一个额外的层,这对可读性没有帮助,但会被编译器优化。