変数を public にしてA.setVariableX(A.getVariableY())
.
5 に答える
実装の詳細を非表示にします。代わりにプロパティをパブリックにすることを選択し、後でそれらの動作方法を変更することにした場合は、関連するすべてのコードを変更する必要があります。
ゲッターとセッターを使用すると、多くの場合、可視 API を変更せずに内部実装の詳細を変更できます (したがって、問題のクラスの API を使用するコードを変更する必要がなくなります)。
ゲッターとセッターは検証と遅延インスタンス化を実行できますが、パブリック メンバーは実行できません。
余談ですが、これは言語に依存しません。プロパティを実装するほとんどの言語は実装を抽象化するため、コード内のパブリック メンバーのように見えます。
変数が何であるかについていくつかの制約があり、それを設定するときにそれを確認する必要があるためです。
たとえば、Age を -1 にすることが許可されていない場合は、セッターでそれを確認します。
if(value >= 0)
{
_age = value;
}
else
{
throw new InvalidAgeException("Age may not be less than 0");
}
セッターとゲッターは、コード内の「プロパティ」が何であれ、プロパティに適用されます。
たとえばangle
、ラジアンで表された角度値を格納する変数を使用できます。次に、関連すると思われる任意の角度単位を使用して、この変数のセッターとゲッターを定義できます。
これはカプセル化の原則の一部です。セッターとゲッターをインターフェイスとして使用してオブジェクトと対話します。これにより、たとえば、クラスを使用するコードに触れることなく、後で任意の機能 (入力データの検証など) を追加できます。