吸气剂和制定者的目的?

时间:2010-06-14 08:12:28

标签: oop getter-setter

  

可能重复:
  Public Data members vs Getters, Setters
  Purpose of private members in a class

当你可以公开你的变量并避免像A.setVariableX(A.getVariableY())这样的行的麻烦时,getter和setter有什么用?

5 个答案:

答案 0 :(得分:11)

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

使用getter和setter,您通常可以在不更改可见API的情况下更改内部实现细节(从而避免更改使用相关类API的任何代码)。

答案 1 :(得分:3)

getters和setter可以进行验证和延迟实例化,而公共成员则不能。

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

答案 2 :(得分:3)

因为有时会对你的变量有什么限制,并且在设置它时必须检查它是否有意义。

例如,如果您的年龄不允许为-1,您可以在您的设置器中检查。

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

答案 3 :(得分:2)

Setters和getters适用于属性,无论代码中有什么“属性”。

例如,您可以拥有一个angle变量,该变量存储以弧度表示的角度值。然后,您可以使用您认为相关的任何角度单位为此变量定义setter和getter。

答案 4 :(得分:0)

这是封装原则的一部分。您可以使用setter和getter作为与对象交互的接口,以便您可以 - 例如 - 稍后添加任何功能(如验证输入数据),而无需触及使用该类的代码。