基本的に、 variable を作成すると、public
コミットされ、この決定に戻ることはできなくなります。今後のすべての変更により、クラスのパブリック インターフェイスが変更されます。つまり、そのクラスのすべての使用法を変更する必要があります。パブリック API の場合、これは考えられません。あなたのライブラリは事実上下位互換性を壊しました。
私的に使用されるクラスであっても、これは大したことではありません。
では、変数のスコープをprivate
将来いつ変更するのでしょうか? これには多くの考えられる理由があります。最も簡単な方法は、変数の値が変更されるたびにクラスで何かを行う必要がある場合です (変更をログに記録するか、それに応じて他の変数を更新するなど)。または、変数がまったく必要ないこと、およびユーザーが要求した値をその場で計算する必要があることを後で決定します。
変数を直接読み取ったり設定したりする場合、それは不可能です。代わりに、変数への直接アクセスを禁止し、代わりに適切な public getter/setter メソッドを提供することで、クラスはユーザーに getter/setter を呼び出すよう強制する必要があります。
一般に、このような将来の変化を予測することはできないため、変数を作成しないpublic
ことがベスト プラクティスとして受け入れられるようになりました。すべての変数はprivate
(または少なくとも内部) である必要があります。
(例外が 1 つあります。場合によっては、final
変数を安全に作成できpublic
ます。たとえば、enum のような定数はpublic final
Java ライブラリで変数として実装されることがよくあります。これらの定数は決して変更されないためであり、とにかく読み取り専用であるためアクセス制御は必要ありません)。 .