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


这个问题在这里已有答案:


2177
2017-11-09 14:08


起源

请帮助我了解Java中受保护的具体工作 - motaz99
因为这就是Java编程语言的设计方式。 - Jesper
James Gosling尚未加入SO。等到他注册。那么只有你会得到确切的原因。 - Rohit Jain
考虑一下:如果它 没有 以这种方式工作,你如何在同一个包中创建一组紧密耦合的类,它们还将一些内部导出到外部子类?你需要更多的修饰符,使语言变得不必要复杂。 - Marko Topolnik
@aioobe对我来说,重点是“公共”和“受保护”信号公共API - API的某些部分旨在通过扩展库的类来使用。从这个角度来看,如果你没有成为公共API,就无法将某些内容导出到你的包“朋友”中,这将是非常糟糕的。 - Marko Topolnik


答案:


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

那是什么东西 protected 可以从

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

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


15
2017-11-09 14:16



谢谢<br>所以在Java中,如果我们有数据包,我们就不能让子类访问空间字段并阻止同一个数据包中的其他类访问它 - motaz99