14
  Modifier        Class     Package   Subclass  World
  public          Y         Y         Y         Y
  protected       Y         Y         Y         N
  no modifier     Y         Y         N         N
  private         Y         N         N         N


  public class a {
  protected int x;
  }

  public class b {
        b() {
              a A=new a();
              A.x=9;//why we can access this field ?
        }
  }

请帮助我了解 Java 中 protected 的具体工作

4

1 回答 1

16

为什么?因为这就是 Java 编程语言的设计方式。没有更多的了。

可以protected

  • 班级本身,
  • 同一个包中的类(不管它们是否是子类),
  • 子类(不管它们是否在同一个包中)。

这与 C++ 不同,但 Java 不是 C++,因此不一定以相同的方式工作。

于 2012-11-09T14:16:43.170 回答