虽然在修饰符的继承性中,默认修饰符的可见性低于protected修饰符,但为什么可以将类设置为default,而不是protected。
发布于 2013-12-17 19:22:20
为什么一个类可以作为默认类,但不能作为保护类?
一个更合理的问题应该是,为什么Java可以容忍公共顶级类之外的任何类
允许包私有顶级类的规定已经是对Java最早版本的一种改进,并被嵌套类所取代,如果您愿意,嵌套类可以是protected。
发布于 2013-12-17 19:20:05
我希望你指的是顶级类(只能是public或default)。否则,内部类可以有任何修饰符。
当我们说保护时,这意味着它可以从包含受保护实体的类的所有子类中访问(可以是一个类)。
如果最外层的类是受保护的,那么它定义了受保护修饰符的定义。
发布于 2013-12-17 19:21:55
如果您有一个protected内部类或嵌套类,则允许从外部类或类似类的同一个包或子类内部进行访问。
如果你有一个受保护的顶级类,那么就没有外部类可以从中获得访问权限,所以受保护是没有意义的。
来自Ex.的示例它对于要保护的嵌套类型是有效的:
public class Foo {
protected static class Bar{}
}这允许Foo的子类访问Bar。
https://stackoverflow.com/questions/20632682
复制相似问题