6

私はどの言語でもアクセス制御が大好きですが、Java ではpackage-privateアクセス修飾子を使用することはほとんどありません (または使用しない)。

内部クラスはprivateprotected、またはにすることができますが、外部クラスはまたはpackage-privateのみにすることができます。外側のクラスが であるのに ではないのはなぜですか? サブクラスではなく、パッケージ全体でクラス/メソッド/フィールドが見えるように制限する利点は何ですか?package-privatepublicpackage-privateprotected

4

2 に答える 2

2

多くの場合、同じパッケージ内のピア クラスの作成者は同じであるため、作成者はこれらのクラスが内部でどのように動作するかを知っています。つまり、これらのクラスのカプセル化されたロジックを知っています。したがって、クラス間のパッケージ プライベート アクセスが、アクセスされたクラスのカプセル化されたロジックに準拠し、これらのアクセスが何も破壊しないことを確認できます。

これらの直接アクセスは、多くの場合、最適化やソース コードの量を抑えるのに役立ちます。

外部クラスがパッケージ プライベートでありながら保護されていない理由については、答えがありません。

于 2013-08-22T14:21:03.167 に答える