Java:アクセス修飾子は「保護」よりも制限が厳しく、「プライベート」よりも制限が緩いですか?
-
06-07-2019 - |
質問
protected
に似たものが必要です。ここでは、 protected
フィールドを実装するクラスとそのサブクラスがアクセスできるクラスのみが必要です。
そのため、基本クラスの変数を private
として宣言できるようにしますが、サブクラスからはアクセスできるようにします。
おそらくこれは、サブクラス化、 private
、および/または protected
の性質そのものに反している可能性があります。
このようなものはJavaに存在しますか?
解決
Javaのフィールドには4つのアクセスレベルしかありません:
-
プライベート
- package-private(デフォルト、アクセス修飾子なし)
-
protected
-
public
protected
は、サブクラス、同じパッケージ内の他のクラス、およびクラス自体のメンバーが protected
メンバーにアクセスできるようにします。
簡単に言えば、希望することを正確に達成する方法はありません。
これら4つのアクセス修飾子の説明については、へのアクセスの制御 The Javaチュートリアルのクラスのメンバーには、より具体的な情報。
他のヒント
コードベースを制御する場合、ベースクラスを使用していつでもパッケージに入れるものを制御できます-パッケージ内に単独である場合、サブクラスのみがサブクラスを除いてプライベートにしたいメンバーにアクセスできます。
いいえ、アクセス修飾子はありませんまさにそれをしてください。 protected
修飾子は最も近いものですが、同じパッケージ内の任意のクラスおよびサブクラス(同じパッケージ内外)にフィールドを公開します。
できません。 Uは引き続き変数をプライベートとして宣言し、変数を変更するパブリックメソッドを宣言できます スーパークラス。次に、変数のパブリックメソッドを呼び出します。