为什么 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
}
}
为什么 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
}
}
protected
因为包是非相关类的访问修饰符的“可见性限制” 。请参阅此处的文档: http: //docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html:
protected 修饰符指定该成员只能在其自己的包中访问(与 package-private 一样),此外,它的类在另一个包中的子类也可以访问。
从上面可以看出,你既不是子类的情况,也不是同一个包的情况。