2016-05-31 3 views
0

フィールドの属性メソッドが存在する場合(get/set)、フィールド属性を直接参照するのは悪いですか?アクセスメソッドまたは直接スーパークラスでattributtesを参照していますか?

また、JComponentsを扱う場合、以前の検査では、クラスフィールドで初期化できない理由がわからないときに、コンストラクタのフィールド属性を初期化します。これには正当な理由はありますか、私は自由に選択できますか?

+1

1一般的には、アクセサーを持つ点を打ち負かすためです。 2スタイルの問題です。あなたのコードを評価している人が好むスタイルを使用することをお勧めします。 – khelwood

+0

あなたの最初の質問への答え:http://stackoverflow.com/questions/1568091/why-use-getters-and-setters – Akah

+0

私は参照してください。フィールドの変数を設定した後に、コンストラクタで8つのフィールドコンポーネントを初期化する必要があります。ちょっとイライラします。私はちょうどそれを吸う必要があると思う。 –

答えて

1

プライベートフィールドのゲッターとセッターを作成すると、のクラスの内部実装が非表示になります。つまり、外部インタフェースを他のクラスに変更することなく内部表現を変更することができます。

たとえば、一連の値に類似したデータ構造を実装するカスタムクラスがある場合。最初の実装では、値の配列を使用できます。

新しい機能をいくつか追加すると、値の内部表現を配列からリストに変更することができます。

ここに例を示します。

アレイを使用してオリジナルコード:

public class MySequence { 
    private Object[] values; 

    public Object[] getValues() { 
     return values; 
    } 

    public void setValues(Object[] values) { 
     this.values = values; 
    } 
} 

その後、あなたは新しい値を追加するためのメソッドを作成することをお勧めすることができると思います。ここでは内部実装を変更して、MySequenceクラスのユーザーに同じインターフェイスを残すことができます。

関連する問題