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