【发布时间】: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,那将是非常糟糕的。