0

可能的重复:
Getter 和 Setter 是邪恶的吗?
为什么要使用 getter 和 setter?

我一直在问自己这个问题,但为什么我们实际上要使用 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;
4

2 回答 2

6

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

这一切都是为了将​​其他应用程序使用的外部表示与内部实现管道分开。这些是基础。

于 2012-08-30T12:57:08.007 回答
1

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

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

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

于 2012-08-30T12:58:20.627 回答