重複の可能性:
ゲッターとセッターを使用する理由
Java for Dummies の第 2 版を読んでいますが、クラスの変数を作成するのではなく、アクセサ メソッドを定義する方がよいと書かれていますpublic
。本当?
重複の可能性:
ゲッターとセッターを使用する理由
Java for Dummies の第 2 版を読んでいますが、クラスの変数を作成するのではなく、アクセサ メソッドを定義する方がよいと書かれていますpublic
。本当?
はい。
アクセサー メソッドを定義すると、柔軟性が向上します。たとえば、public
読み取りのみ可能で、private
書き込みのみ可能にすることができます。
これは、この特定の質問に対する Skeet の回答です。彼は、フィールドを常に非公開にすることを提案しています
はい、コンベンションです。
他のクラスがメンバー (通常は非公開) にアクセスする方法を制御できます。たとえば、値を返したり設定したりする基本的な get/set から始めることができます。しかし、プロジェクトの後半でさらに制御を追加したくなるかもしれません。この場合、すべてのプロジェクトを屈折させる代わりに、get/set メソッドを変更するだけで済みます。
可能であれば、アクセサメソッドも持たない方が良いとまで言っています。別のクラスが動作するようにクラスを公開するのではなく、クラスが独自の状態で動作するようにします。
状態を公開する必要がある場合は、アクセサー メソッドを使用すると、実際のオブジェクトではなく状態のコピーを返すことができます。このようにして、呼び出しクラスは外部から状態を変更できなくなり、不変条件が壊れる問題が回避されます。
これは本当です!
Java では、クラス変数を private として宣言し、public アクセサー メソッドとミューチュエーター メソッドを記述してクラス外でそれらを制御するのが一般的です。
通常、アクセサ メソッドを作成して、他のクラス (および誰でも) が使用できるデータを調整することをお勧めします。
特に大規模なプロジェクトでは、クラス内の多くの変数の一部のみを他のクラスで使用する必要があるため、いくつかの getter メソッドのみを作成します。
一方で、コードがきれいになり、何が起こっているのかを簡単に確認できます。第三に、他のクラスでは選択できる変数が少ないため、間違った変数を使用してプログラムに独自のバグを作成することは困難です。