受保护的访问类型

vij*_*jay 2 java subclass access-specifier

可能重复:
在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

  }
Run Code Online (Sandbox Code Playgroud)

Niv*_*vas 8

受保护的成员可以由类,包中的其他类以及其子类隐式访问.即,子类可以x从其自己的父级访问.

您能够访问的this.x事实证明可以访问x超类.如果x在超类中是私有的,this.x则会出错.

当您说p.x您正在尝试访问其他实例时x,而不是在其自己的层次结构中.包装外不允许这样做.