java - 为啥在java中没有继承的情况下可以在同一个包中访问protected? [复制]
Posted
技术标签:
【中文标题】java - 为啥在java中没有继承的情况下可以在同一个包中访问protected? [复制]【英文标题】:Why protected can be access in same Package without inheritance in java? [duplicate]java - 为什么在java中没有继承的情况下可以在同一个包中访问protected? [复制] 【发布时间】:2012-10-29 20:43:34 【问题描述】: 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的具体工作
【问题讨论】:
请帮我了解一下Java中protected的具体工作 因为 Java 编程语言就是这样设计的。 James Gosling 尚未加入 SO。等他注册。那么只有你会得到确切的原因。 考虑一下:如果它没有那样工作,你将如何在同一个包中创建一组紧密耦合的类,同时将它们的一些内部导出到外部子类?为此,您需要更多修饰符,从而使语言变得不必要地复杂。 @aioobe 对我来说,主要的一点是“公共”和“受保护”都表示公共 API——API 的某些部分旨在通过扩展库的类来使用。这样看来,如果你不能将某些东西导出到你的包“朋友”而不成为公共 API,那将是非常糟糕的。 【参考方案1】:为什么?因为这就是 Java 编程语言的设计方式。没有更多的了。
protected
可以从
这与 C++ 不同,但 Java 不是 C++,因此不一定以相同的方式工作。
【讨论】:
谢谢所以在Java中,如果我们有数据包,我们不能让子类访问空间字段并阻止同一数据包中的其他类访问它以上是关于java - 为啥在java中没有继承的情况下可以在同一个包中访问protected? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Java中,通过实现Runnable接口来创建进程时,没有继承Thread类,为啥却可以创建Thread类对象