私の理解によると、保護されたメソッドは同じパッケージ内の任意のクラスからアクセスできますが、このクラスのサブクラスのみが他のパッケージからアクセスできます。
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