【发布时间】:2012-06-02 08:05:49
【问题描述】:
我正在阅读 Java for Dummies 第 2 版,它说最好为类的变量定义访问器方法,而不是使它们成为 public。这是真的吗?
【问题讨论】:
标签: java encapsulation
我正在阅读 Java for Dummies 第 2 版,它说最好为类的变量定义访问器方法,而不是使它们成为 public。这是真的吗?
【问题讨论】:
标签: java encapsulation
是的。
定义访问器方法使您具有更大的灵活性。例如,您可以使其publicly 可读,但仅privately 可写。
Here's a Skeet answer to this particular question。他建议始终将您的字段设为私有
【讨论】:
readonly?
final可以当成readonly
final 并不一定意味着readonly。这意味着我们正在为这个字段设置一定的内存块,并且该内存块的 boundaries 可能不会改变。现在,该内存块中的位可能会更改,但字段可能不会更改以引用不同的对象。请注意,对于诸如int 和double 之类的原语,这意味着该值是一个常量,因为每个值都被分别视为Integer 和Double 类的不同实例。
这是真的!
在 Java 中,通常的做法是将类变量声明为私有,然后编写公共访问器和转换器方法来在类外控制它们。
【讨论】:
创建访问器方法通常很好,以规范任何其他类(和任何人)可以使用的数据。
特别是在大型项目中,您希望其他类只使用该类中众多变量中的一小部分,因此您只需创建几个 getter 方法。
另一方面,它使代码更清晰,更容易看到正在发生的事情。第三,使用错误的变量很难在程序中创建自己的错误,因为在其他类中可供选择的变量较少。
【讨论】:
【讨论】:
是的,这是一个约定。
它允许您控制其他类如何访问成员(通常是私有的)。例如,您可以从返回和设置值的基本 get/set 开始。但也许在项目的后期你会想要添加更多的控制。在这种情况下,您只需更改 get/set 方法,而不是重构您的所有项目。
【讨论】:
我想说的是,如果可能的话,最好不要使用访问器方法。让类在自己的状态下工作,而不是将其暴露给另一个类使用。
如果您必须公开状态,访问器方法让您有机会返回状态的副本,而不是实际的对象。这样调用类将无法从外部修改状态,避免了不变量被破坏的问题。
【讨论】: