2017-09-03 7 views
0

クラスBがAを拡張する場合、Aのpublicおよびprotected変数はBに継承され、private変数は継承されません。しかし、public変数とprotected変数は、同じパッケージの他のクラスから直接アクセスできます。Javaでは、クラスとサブクラス、およびパッケージ内の他のクラスにのみ表示される変数を作成するにはどうすればよいですか?

どのようにこれらの継承された変数をプライベートにすることができますか?

+2

[なぜJavaではサブクラス可視性修飾子がありませんか?](https://stackoverflow.com/questions/5300163/why-is-there-no-sub-class-visibility-modifier-in) -java) – DPM

+0

あなたが夢中になりたい場合は、静的コードアナライザでカスタムアノテーションとカスタムルールを使用し、ビルドツールでそれを使用し、そのような注釈付きメソッド。 – DPM

答えて

3

できません。 Javaのアクセス修飾子はそれを表現するには十分ではありません。

同じパッケージ内の他のクラスからのアクセスを防止する唯一の方法は、同じパッケージ内に他のクラスを持たないことです。

+0

私は本当に理解しにくいです。まず、Javaの方法に従って、すべてのフィールドを非公開にする必要があります。しかし、フィールドを継承したい場合は、プライベートではありません。それでは、どのように継承されたフィールドをプライベートにしますか?なぜ私は許されないのですか? – arandomguy

0

詳細が十分ではないので、ここに収まるかどうかはわかりませんが、特定のメソッドだけにアクセス権を与えたい場合は、必要なものを公開し、話したクラスを実装するためのインターフェイスを作成できます。

関連する問題