0

可能重复:
为什么要使用 getter 和 setter?

我正在阅读 Java for Dummies 2nd edition,它说最好为类的变量定义访问器方法,而不是让它们public. 真的吗?

4

6 回答 6

3

是的。

定义访问器方法使您具有更大的灵活性。例如,您可以使其public可读,但仅private可写。

这是这个特定问题的 Skeet 答案。他建议始终将您的字段设为私有

于 2012-05-27T19:00:36.163 回答
1

是的,这是一个约定。

它允许您控制其他类如何访问成员(通常是私有的)。例如,您可以从返回和设置值的基本 get/set 开始。但也许在项目的后期你会想要添加更多的控制。在这种情况下,您只需更改 get/set 方法,而不是重构所有项目。

于 2012-05-27T19:04:49.277 回答
1

如果可能的话,我什至会说最好不要使用访问器方法。让班级在自己的状态下工作,而不是将其公开给另一个班级使用。

如果您确实必须公开状态,访问器方法使您有机会返回状态的副本而不是实际的对象。这样调用类将无法从外部修改状态,避免了不变量被破坏的问题。

于 2012-05-27T19:14:13.800 回答
0

这是真的!

在 Java 中,通常的做法是将类变量声明为私有,然后编写公共访问器和转换器方法来在类外控制它们。

于 2012-05-27T19:01:02.013 回答
0

制作访问器方法通常很好,以规范任何其他类(和任何人)可以使用的数据。

特别是在大型项目中,您希望其他类只使用该类中众多变量中的一小部分,因此您只需创建几个 getter 方法。

另一方面,它使代码更清晰,更容易看到正在发生的事情。第三,使用错误的变量很难在程序中创建自己的错误,因为在其他类中可供选择的变量较少。

于 2012-05-27T19:01:15.780 回答
0

我推荐阅读面向对象的编程哲学:

维基百科

当您定义访问器时,您可以在那里编写一些额外的逻辑来保护对象的状态。

于 2012-05-27T19:01:42.310 回答