可能性の重複:
Why use getters and setters?なぜ変数にgetterメソッドとsetterメソッドを公開するのではなく好むのですか?
はい、それは非常に単純なことだが、私はこのために良いresonを見つけることではないのです。変数をプライベートにして、その変数にアクセスするためのセッターにゲッターを提供するのがよい方法です。まだこれ以外の理由はありますか?
可能性の重複:
Why use getters and setters?なぜ変数にgetterメソッドとsetterメソッドを公開するのではなく好むのですか?
はい、それは非常に単純なことだが、私はこのために良いresonを見つけることではないのです。変数をプライベートにして、その変数にアクセスするためのセッターにゲッターを提供するのがよい方法です。まだこれ以外の理由はありますか?
ルックアップ「カプセル化」と「情報隠蔽」。
基本的に、クラスはデータを管理し、そのデータへのアクセスを提供しますが、そのデータの内部表現はクラスに対してプライベートに保たれている必要があります。このように、クラスは他のコードを破ることなく内部表現を変更することができます。
など。次の点を考慮してください:
A)
public Date date;
B)
private Date date;
public Date getDate(){...}
public setDate(Date date){...}
後で、日付の代わりにカレンダーを使用することを選択します。 ケースA)では、コードを破損することなくデータタイプを変更することはできません。あなたがすることができるケースBでは
):
private Calendar calendar;
public Date getDate(){...}
public setDate(Date date){...}
public Calendar getCalendar(){...}
public setCalendar(Calendar calendar){...}
あなたが得る/ SETDATE方法で変換を行うことができます。クライアントコードは壊れません。あなたは時々ゲッターとセッターを使用したい
もう一つの理由は、JavaBeansパターンのベースライブラリ/
フレームワークを使用することです。
変数をpublicにしておくと、オブジェクトが一貫性のある状態を保つことができなくなります。あなたのセッターでは、例えば、以下のようなチェックをすることができます。負の数を年齢として設定しないでください。
パブリック変数を使用している場合、リスナーは通常、リスナーがsetter経由で変数を設定する際に通知を使用するため、ドロップする可能性があります。パブリック変数を直接変更するときに変更を追跡する機会はありません。
これらはいくつかの非常に基本的な例ですが、より多くの情報が確実に得られます。
多くの理由があります。これは、クラスの内部動作へのアクセス(アクセサ)を制御する方法です。たとえば、セッターに渡された新しいオブジェクトにハンドラーを指すのではなく、オブジェクトまたはセッターのクローンを返すようにしたい場合があります。別の理由は、この機能を公開せずにオブジェクトを取得または設定する前または後に何かを行うことです。
それをまとめると:
への扉を閉め、将来の拡張
確実に尋ねられ、回答されました。深く:-) –