我在两个不同的包中有两个类:
package package1;
public class ParentClass {
public void testPublic() {
}
protected void testProtected() {
}
}
package package2;
import package1.ParentClass;
public class ChildClass extends ParentClass {
void test() {
ParentClass par = new ParentClass();
par.testProtected(); // Line 1 : ERROR: testProtected() has protected access in ParentClass
testProtected(); // Line 2 : No error
ChildClass ch = new ChildClass();
ch.testProtected(); // Line 3 : No ERROR
testProtected(); // Line 4 : No error
}
}
我能够理解为什么在调用testProtected() -- Line 2
时会出现NO ERROR,因为ChildClass
看到了此方法,因为它继承自ParentClass
。
并且以某种方式能够理解为什么在调用par.testProtected() -- Line 1
时它是throwing ERROR,因为par
是一个不同的对象,并且当前对象无法访问其他对象的父级的受保护方法。
但是,当引用类型仅是ChildClass时,ChildClass的对象如何可以访问相同的方法ch.testProtected() -- Line 3
(另一个对象的父级的受保护方法?]]
我在两个不同的包中有两个类:package package1;公共类ParentClass {public void testPublic(){} protected void testProtected(){}} package package2; ...
您看到的错误是完全有道理的。
执行此操作时