我在默认程序包中有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/

10-11 22:52
查看更多