1

なぜ保護されたサブクラスの別のパッケージ内の他のクラスに非公開になります.しかし、それはまだスーパークラスの同じパッケージ内で保護されています.

package a;
class A
{
  protected a;
}

package b;
class B extends A
{
  B()
{
  System.out.println(a);
}
}

class C
{
  C()
  {
    System.out.println(new B().a);//error
   }

}
4

1 に答える 1

4

protectedパッケージは、関連のないクラスのアクセス修飾子の「可視性の制限」であるためです。ここのドキュメントを参照してください: http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html :

protected 修飾子は、メンバーが (package-private と同様に) 独自のパッケージ内でのみアクセスできることを指定し、さらに、別のパッケージ内のそのクラスのサブクラスによってアクセスできることを指定します。

上記からわかるように、サブクラスの場合でも、同じパッケージの場合でもありません。

于 2012-07-05T13:09:04.897 に答える