为什么protected可以在没有java继承的同一个包中访问?

时间:2012-11-09 14:08:59

标签: java protected

  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中受保护的具体工作

1 个答案:

答案 0 :(得分:15)

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

可以从

访问protected的内容
  • 班级本身,
  • 同一个包中的类(如果它们是子类,则无关紧要),
  • 子类(如果它们在同一个包中,则无关紧要)。

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