为什么在java中,受保护的访问可以在同一个包中进行,而无需继承?

为什么在java中,受保护的访问可以在同一个包中进行,而无需继承?,java,protected,Java,Protected,请帮助我了解Java中protected的具体工作为什么?因为Java编程语言就是这样设计的。没什么了 受保护的东西可以从 班级本身 同一包中的类(不管它们是否为子类) 子类(不管它们是否在同一个包中) 这和C++不同,但java不是C++,所以它不一定是同样的工作。请帮助我知道JavaBeCube中的特定工作,这只是java编程语言是如何设计的。詹姆斯·高斯林还没有加入。等他登记。然后,只有你会得到确切的原因。考虑一下:如果它不这样工作,你会如何在同一个包中建立一组紧密耦合的类,也将一些内



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

为什么?因为Java编程语言就是这样设计的。没什么了

受保护的东西可以从

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

这和C++不同,但java不是C++,所以它不一定是同样的工作。

请帮助我知道JavaBeCube中的特定工作,这只是java编程语言是如何设计的。詹姆斯·高斯林还没有加入。等他登记。然后,只有你会得到确切的原因。考虑一下:如果它不这样工作,你会如何在同一个包中建立一组紧密耦合的类,也将一些内部构件导出到外部子类?您需要更多的修饰符,这使得语言变得不必要的复杂。@aioobe对我来说主要的一点是“public”和“protected”都表示公共API——API的某些部分是为扩展库的类而设计的。这样看来,如果您不能将某些内容导出到包“friends”而不将其变成公共API,那就太糟糕了。谢谢
所以在Java中,如果我们有on-packet,我们就不能让子类访问空间字段,也不能阻止同一个包中的其他类访问它
  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 ?
        }
  }