保护访问类型
可能重复:
在Java中,public,default,protected和private有什么区别?
为什么一个包中的子类不能通过超类的引用访问其超类的保护成员(在另一个包中)? 我正在为这一点而努力。 请帮帮我
package points;
public class Point {
protected int x, y;
}
package threePoint;
import points.Point;
public class Point3d extends Point {
protected int z;
public void delta(Point p) {
p.x += this.x; // compile-time error: cannot access p.x
p.y += this.y; // compile-time error: cannot access p.y
}
受保护的成员可以被类,包中的其他类以及其子类隐式访问。 即,子类可以从其父母访问x
。
您可以访问this.x
事实证明,超类中的x
是可访问的。 如果x
在超类中是私有的,则this.x
会给出错误。
当你说px
你试图访问一些其他实例的x
,而不是在它自己的层次结构中。 这是不允许的。
因为您引用了不同Point
实例的成员。 这是不允许的。
您可以像使用this.x
那样访问继承的成员。