質問

これは非常に基本的な質問であることに気づきましたが、それは常に私を悩ませてきました。私が理解しているように、Javaでプライベートフィールドを宣言すると、そのクラスの外部からは見えません。保護されている場合、継承されたクラスと同じパッケージ内のすべてのもので使用できます(これらの定義のいずれかが間違っている場合は修正してください)。

これは、同じパッケージ内の他の継承されていないクラスではなく、継承されたクラスのみがアクセスできるフィールドを宣言できないことを意味しますか?

これを回避する方法はありますが、このような動作をしたい場合はありますか?

明らかに、上記の質問はメソッドとフィールドに適用されます。

どうもありがとう。

役に立ちましたか?

解決

参照: http://java.sun.com/ docs / books / tutorial / java / javaOO / accesscontrol.html
パッケージ<!> gt;サブクラスでは、同じパッケージのクラスからではなく、サブクラスからのみフィールドを表示できます。

他のヒント

基本的に:

  • private:クラスのみがアクセス可能。
  • public:すべてのクラスからアクセス可能。
  • protected:クラス、継承されたすべてのクラス、および現在のパッケージのクラスからアクセス可能(編集済み)
  • スコープが定義されていません:現在のパッケージのすべてのクラスからアクセスできます。

詳細こちら

>

はい、Javaの保護されたアクセスはそのように少し奇妙です。なぜそれが望ましいのか、すぐにはわかりません。個人的には、(プライベート以外の)非プライベートフィールドは好きではないので(フィールドは気にしませんが、他のメンバーも同じです。

.NETにはパッケージ/ネームスペースアクセスの可視性の概念はまったくありませんが、アセンブリ(<!> quot; jar file <!> quotと考えてください-まったく同じではありませんが、近い) )。率直に言って、名前空間のおよびデプロイメントユニットの可視性オプションが必要ですが、失望する運命にあるようです...

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