我在默认程序包中有P4
类(我知道使用默认程序包是一种不好的做法,但现在只是“例如”):
import temp.P2;
public class P4 extends P2 {
public void someMethod() {
P2 p2 = new P2();
// p2.p2default(); // ERROR as expected
p2.p2public();
p2.p2protected(); // ERROR as not expected
}
}
和
P2
包中的temp
类package temp;
public class P2 {
protected void p2protected() {
...
}
public void p2public() {
...
}
void p2default() {
...
}
}
从access control mechanism,我希望
P4
-扩展了P2
,一旦导入了该软件包的 namespace ,即使从该软件包的外部,也应该能够看到其父类(super class)的protected
成员。我想念什么?
TIA。
最佳答案
您定义的类型是P2 p2 = new P2();
的P2
,而不是P4
。如果p2
的类型为P4
,则它可以访问它,因为它是P2
的子类。
关于java - 访问控制-程序包外部 protected 成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25369604/