3

重複の可能性:
パブリック データ メンバーとゲッター、セッター
クラスのプライベート メンバーの目的

変数を public にしてA.setVariableX(A.getVariableY()).

4

5 に答える 5

14

実装の詳細を非表示にします。代わりにプロパティをパブリックにすることを選択し、後でそれらの動作方法を変更することにした場合は、関連するすべてのコードを変更する必要があります。

ゲッターとセッターを使用すると、多くの場合、可視 API を変更せずに内部実装の詳細を変更できます (したがって、問題のクラスの API を使用するコードを変更する必要がなくなります)。

于 2010-06-14T08:14:49.547 に答える
4

ゲッターとセッターは検証と遅延インスタンス化を実行できますが、パブリック メンバーは実行できません。

余談ですが、これは言語に依存しません。プロパティを実装するほとんどの言語は実装を抽象化するため、コード内のパブリック メンバーのように見えます。

于 2010-06-14T08:15:28.143 に答える
4

変数が何であるかについていくつかの制約があり、それを設定するときにそれを確認する必要があるためです。

たとえば、Age を -1 にすることが許可されていない場合は、セッターでそれを確認します。

if(value >= 0)
{
   _age = value;
}
else
{
  throw new InvalidAgeException("Age may not be less than 0");
}
于 2010-06-14T08:15:44.883 に答える
3

セッターとゲッターは、コード内の「プロパティ」が何であれ、プロパティに適用されます。

たとえばangle、ラジアンで表された角度値を格納する変数を使用できます。次に、関連すると思われる任意の角度単位を使用して、この変数のセッターとゲッターを定義できます。

于 2010-06-14T08:18:04.983 に答える
2

これはカプセル化の原則の一部です。セッターとゲッターをインターフェイスとして使用してオブジェクトと対話します。これにより、たとえば、クラスを使用するコードに触れることなく、後で任意の機能 (入力データの検証など) を追加できます。

于 2010-06-14T08:15:28.077 に答える