根据我的理解,同一个包中的任何类都可以访问受保护的方法,但只有该类的子类才能从其他包中访问。
package Parent;
public class Parent {
protected void display() {
//Code here
}
}
import Parent;
package Child;
class Child extends Parent{
void view(Parent p1) {
this.display(); // Success
p1.display(); // Error
}
void next(Parent p2) {
p2.foo(); //Success
}
}
这里this.display()
是成功的,因为子类负责实现。但p1.display()
不工作,因为p1
不是Child
类的一部分。在从同一个包中的类访问受保护方法的情况下,我们如何证明这种行为是合理的?