かなり重要な変数を持つクラスがあり、コードから他のプログラマが設定した値が許容できない値になったとします。これらのコードはコードにエラーをもたらしました。解決策として、OOPでは、(変数に格納されている)オブジェクトの状態をメソッドを通じてのみ変更することができます。オブジェクトの状態を隠し、オブジェクトメソッドを通じてすべての相互作用を提供することは、データカプセル化として知られています。
変数をprivate
マーキングし、必要に応じてpublic
することは、すでにpublic
変数を隠すことよりもはるかに簡単です。
カプセル化が有益でないかもしれない1つの例外があります: "ダム"データ構造(変数を保持することを唯一の目的とするクラス)
public class DumbData {
public String name;
public int timeStamp;
public int value;
}
この場合は、クラスのインターフェイスは、それが保持するデータです 。
final
とマークされた変数は、設定後に変更できないため、カプセル化に違反することなくpublic
とマークすることができます。