0

重複の可能性:
ゲッターとセッターは悪ですか?
なぜゲッターとセッターを使用するのですか?

私はしばらくの間これを自問してきましたが、なぜ実際にゲッターとセッターのメソッドを使用するのですか?彼らは私たちのコードで余分なスペースを占有します、誰かが説明できます。理解を深めるために、以下にいくつかのコードを投稿しました。

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

ゲッターとセッターは、オブジェクト実装の抽象ラッパーです。他のフィールドメンバーの値に基づいて実際に(例として)計算されるが、クラス内に格納または永続化されないオブジェクトのプロパティがある場合、ゲッターはプロパティ自体がクラスにネイティブであるという錯覚を引き起こします、その実装は大幅に異なりますが。また、セッターのないゲッターを使用すると、読み取り専用プロパティを作成し、クラスの内部メンバーを不注意による破壊的な変更から保護できます。

それはすべて、他のアプリケーションによって消費される外部表現を内部実装配管から分離することです。以上が基本です。

于 2012-08-30T12:57:08.007 に答える
1

getterメソッドとsetterメソッドはアクセサーメソッドです。つまり、これらは通常、プライベートクラスのメンバーを変更するためのパブリックインターフェイスです。プロパティを定義するには、getterメソッドとsetterメソッドを使用します。getterメソッドとsetterメソッドは、クラス内でメソッドとして定義している場合でも、クラス外のプロパティとしてアクセスします。クラス外のこれらのプロパティは、クラス内のプロパティ名とは異なる名前を持つことができます。

getterメソッドとsetterメソッドを使用することには、プロパティのようにアクセスできる高度な機能を備えたメンバーを作成できるなど、いくつかの利点があります。また、読み取り専用および書き込み専用のプロパティを作成することもできます。

getterメソッドとsetterメソッドは便利ですが、他の問題の中でも特に、特定の状況でコードの保守が困難になる可能性があるため、使いすぎないように注意する必要があります。また、パブリックメンバーのように、クラス実装へのアクセスを提供します。OOPプラクティスは、クラス内のプロパティへの直接アクセスを推奨しません。

于 2012-08-30T12:58:20.627 に答える