クラスBがAを拡張する場合、Aのpublicおよびprotected変数はBに継承され、private変数は継承されません。しかし、public変数とprotected変数は、同じパッケージの他のクラスから直接アクセスできます。Javaでは、クラスとサブクラス、およびパッケージ内の他のクラスにのみ表示される変数を作成するにはどうすればよいですか?
どのようにこれらの継承された変数をプライベートにすることができますか?
クラスBがAを拡張する場合、Aのpublicおよびprotected変数はBに継承され、private変数は継承されません。しかし、public変数とprotected変数は、同じパッケージの他のクラスから直接アクセスできます。Javaでは、クラスとサブクラス、およびパッケージ内の他のクラスにのみ表示される変数を作成するにはどうすればよいですか?
どのようにこれらの継承された変数をプライベートにすることができますか?
できません。 Javaのアクセス修飾子はそれを表現するには十分ではありません。
同じパッケージ内の他のクラスからのアクセスを防止する唯一の方法は、同じパッケージ内に他のクラスを持たないことです。
私は本当に理解しにくいです。まず、Javaの方法に従って、すべてのフィールドを非公開にする必要があります。しかし、フィールドを継承したい場合は、プライベートではありません。それでは、どのように継承されたフィールドをプライベートにしますか?なぜ私は許されないのですか? – arandomguy
詳細が十分ではないので、ここに収まるかどうかはわかりませんが、特定のメソッドだけにアクセス権を与えたい場合は、必要なものを公開し、話したクラスを実装するためのインターフェイスを作成できます。
[なぜJavaではサブクラス可視性修飾子がありませんか?](https://stackoverflow.com/questions/5300163/why-is-there-no-sub-class-visibility-modifier-in) -java) – DPM
あなたが夢中になりたい場合は、静的コードアナライザでカスタムアノテーションとカスタムルールを使用し、ビルドツールでそれを使用し、そのような注釈付きメソッド。 – DPM