我不明白为什么人们总是说,当你创建一个类时,你应该创建一个get()
方法来获取类中的变量,以及一个set()
方法来设置类中的变量。
如果你有一个get()/set()
方法......那么为什么不首先公开变量呢?
反正你也不会不小心改变它,因为你仍然需要输入myClassName.variable
我错过了什么吗?
使用 get/set 函数可以让您灵活地稍后更改您的类实现,而无需更改访问该类的所有代码。
例如,您可能会更改其中一个内部变量的类型,或者您想对变量可以设置的值添加限制。也许您可能只想按需计算一个值。
此外,您可以使 get/set 函数非内联,并在其上放置断点。
制作公共变量是一种非常糟糕的做法(在 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