为什么我们实际使用getter和setter?

时间:2012-08-30 12:55:17

标签: java

  

可能重复:
  Are Getters and Setters evil?
  Why use getters and setters?

我一直在问自己一段时间,但为什么我们实际上使用Getters和Setter方法呢?他们在我们的代码中占用了额外的空间,有人可以解释。为了更好地理解,我在下面发布了一些代码。

public class Test2
{
   public int _ChangeThis = 0;
}

---其他方式---

public class Test1
{
    public int _ChangeThis = 0;

    public setChangeThis(int ChangeThis)
    {
        _ChangeThis = ChangeThis;
    }

}

---主要代码---

Test2 testclass = new Test2();

//What is the difference and why do we use the setter? I cannot understand the advantage.
testclass.setChangeThis(1);
testclass._ChangeThis = 1;

2 个答案:

答案 0 :(得分:6)

Getters和Setter是围绕对象实现的抽象包装器。您可能拥有一个对象的属性,该对象实际上(作为示例)基于其他字段成员的值计算,但未在类中存储或持久存在,因此getter会产生这样的错觉:属性本身是该类的本机虽然它的实施有很大不同。此外,没有setter的getter允许您创建只读属性并保护类的内部成员免受无意和可能的破坏性修改。

所有关于将其他应用程序消耗的外部表示与内部实现管道分离。这些是基础知识。

答案 1 :(得分:1)

Getter和setter方法是访问器方法,这意味着它们通常是用于更改私有类成员的公共接口。您使用getter和setter方法来定义属性。您可以将getter和setter方法作为类外的属性进行访问,即使您在类中将它们定义为方法也是如此。类外的那些属性可以与类中的属性名称具有不同的名称。

使用getter和setter方法有一些优点,例如能够让您创建具有可以像属性一样访问的复杂功能的成员。它们还允许您创建只读和只写属性。

即使getter和setter方法很有用,也应该注意不要过度使用它们,因为在某些情况下,它们会使代码维护更加困难。此外,它们还提供对类实现的访问,例如公共成员。 OOP练习不鼓励直接访问课堂内的属性。