5

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

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

おそらく、これはサブクラス化、、、privateおよび/またはの性質そのものに反しprotectedます。

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

4

4 に答える 4

10

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

  • private
  • package-private(デフォルト;アクセス修飾子なし)
  • protected
  • public

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

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

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

于 2009-09-12T15:49:15.080 に答える
2

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

于 2009-09-12T15:54:20.627 に答える
1

いいえ、それを正確に行うためのアクセス修飾子はありません。修飾子は最もprotected近いものですが、フィールドを同じパッケージ内の任意のクラスとサブクラス(同じパッケージ内または同じパッケージ外)に公開します。

于 2009-09-12T15:48:45.583 に答える
0

ありえない。Uは、変数をプライベートとして宣言してから、スーパークラスの変数を変更するパブリックメソッドを宣言できます。次に、変数のpublicメソッドを呼び出します。

于 2014-10-30T09:39:08.340 に答える