【发布时间】:2020-08-09 16:29:54
【问题描述】:
我在两个不同的包中有两个类:
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 时抛出错误,因为par 是一个不同的对象,并且当前对象无法访问其他对象的父对象的受保护方法。
但是当引用类型仅为 ChildClass 时,ChildClass 的对象如何访问相同的方法ch.testProtected() -- Line 3(其他对象的父对象的受保护方法)?
【问题讨论】:
-
不。未在 ChildClass 中定义。仅在 ParentClass 中定义为受保护。
标签: java inheritance package protected access-modifiers