1

为什么 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
   }

}
4

1 回答 1

4

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

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

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

于 2012-07-05T13:09:04.897 回答