为什么protected对于不同的子类包中的其他类变得私有

时间:2012-07-05 13:06:37

标签: java

为什么protected对于不同的子类包中的其他类变得私有。但它仍然在同一个超类包中受到保护。

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
   }

}

1 个答案:

答案 0 :(得分:4)

因为包是非相关类的protected访问修饰符的“可见性限制”。请参阅此处的文档:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

  

protected修饰符指定只能访问该成员   在它自己的包中(与package-private一样),另外,通过   另一个包中其类的子类。

从上面可以看出,既不是子类的情况,也不是同一个包的情况。