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

mot*_*z99 14 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
Run Code Online (Sandbox Code Playgroud)


  public class a {
  protected int x;
  }

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

请帮助我了解Java中受保护的具体工作

Jes*_*per 15

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

protected可以从中获取的东西

  • 班级本身,
  • 同一个包中的类(如果它们是子类,则无关紧要),
  • 子类(如果它们在同一个包中则无关紧要).

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