2

我不明白为什么人们总是说,当你创建一个类时,你应该创建一个get()方法来获取类中的变量,以及一个set()方法来设置类中的变量。

如果你有一个get()/set()方法......那么为什么不首先公开变量呢?

反正你也不会不小心改变它,因为你仍然需要输入myClassName.variable

我错过了什么吗?

4

2 回答 2

4

使用 get/set 函数可以让您灵活地稍后更改您的类实现,而无需更改访问该类的所有代码。

例如,您可能会更改其中一个内部变量的类型,或者您想对变量可以设置的值添加限制。也许您可能只想按需计算一个值。

此外,您可以使 get/set 函数非内联,并在其上放置断点。

于 2013-04-18T03:01:27.430 回答
2

制作公共变量是一种非常糟糕的做法(在 OO 中),因为如果您想添加任何功能或限制,您将必须找到访问您的类的所有代码并替换它。

Getter 和 setter 解决了必须更改所有代码的问题,当您想要对变量的值添加限制以执行验证或其他功能时。

但是不要过度使用 get/set 函数,getter 和 setter 也违反了 OO 原则,因为它们仍然暴露了实现。如果你真的希望你的代码可以在不同的项目中重用,那么只有在没有其他可能的实现时才使用 get/set 函数。

如果您不相信我,请阅读这篇古老但仍然相关的文章,并得出自己的结论。

http://www.idinews.com/quasiClass.pdf

http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html

http://typicalprogrammer.com/?p=23
于 2013-04-18T03:46:57.137 回答