可能的重复:
公共数据成员与Geters,Setters
班上私人成员的目的

当您只能将变量公开并避免诸如诸如此类的麻烦时 A.setVariableX(A.getVariableY())?

有帮助吗?

解决方案

隐藏实施细节。如果您选择将属性公开,然后稍后决定更改其工作方式,则必须更改所有相关的代码。

使用Getters和Setter,您通常可以更改内部实现详细信息而无需更改可见的API(因此避免了更改使用相关类的API的任何代码)。

其他提示

Getters和Setter可以进行验证和懒惰的实例化,而公共成员不能进行验证。

顺便说一句,这不是语言不可知论,因为实施属性的大多数语言都抽象了实现,因此它们看起来像代码中的公共成员。

因为有时对您的变量可能有一些限制,并且在设置时必须检查是否有意义。

例如,如果不允许您的年龄为-1,则可以在二传手中检查一下。

if(value >= 0)
{
   _age = value;
}
else
{
  throw new InvalidAgeException("Age may not be less than 0");
}

设置器和Getters适用于属性,无论您的代码中的“属性”是什么。

例如,您可以有一个 angle 变量,该变量存储在弧度中表达的角度值。然后,您可以使用您认为相关的任何角度单元来定义此变量的设定器和获取器。

这是封装原则的一部分。您将使用Setter和Getters用作接口与对象进行交互,以便例如以后添加任何功能(例如验证输入数据),而无需触摸使用类(ES)的代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top