Java:アクセス修飾子は「保護」よりも制限が厳しく、「プライベート」よりも制限が緩いですか?

StackOverflow https://stackoverflow.com/questions/1415412

質問

protected に似たものが必要です。ここでは、 protected フィールドを実装するクラスとそのサブクラスがアクセスできるクラスのみが必要です。

そのため、基本クラスの変数を private として宣言できるようにしますが、サブクラスからはアクセスできるようにします。

おそらくこれは、サブクラス化、 private 、および/または protected の性質そのものに反している可能性があります。

このようなものはJavaに存在しますか?

役に立ちましたか?

解決

Javaのフィールドには4つのアクセスレベルしかありません:

  • プライベート
  • package-private(デフォルト、アクセス修飾子なし)
  • protected
  • public

protected は、サブクラス、同じパッケージ内の他のクラス、およびクラス自体のメンバーが protected メンバーにアクセスできるようにします。

簡単に言えば、希望することを正確に達成する方法はありません。

これら4つのアクセス修飾子の説明については、へのアクセスの制御 The Javaチュートリアルのクラスのメンバーには、より具体的な情報。

他のヒント

コードベースを制御する場合、ベースクラスを使用していつでもパッケージに入れるものを制御できます-パッケージ内に単独である場合、サブクラスのみがサブクラスを除いてプライベートにしたいメンバーにアクセスできます。

いいえ、アクセス修飾子はありませんまさにそれをしてください。 protected 修飾子は最も近いものですが、同じパッケージ内の任意のクラスおよびサブクラス(同じパッケージ内外)にフィールドを公開します。

できません。 Uは引き続き変数をプライベートとして宣言し、変数を変更するパブリックメソッドを宣言できます スーパークラス。次に、変数のパブリックメソッドを呼び出します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top