首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么一个类在java中可以有一个默认修饰符,却不能受到保护?

为什么一个类在java中可以有一个默认修饰符,却不能受到保护?
EN

Stack Overflow用户
提问于 2013-12-17 19:16:53
回答 4查看 182关注 0票数 1

虽然在修饰符的继承性中,默认修饰符的可见性低于protected修饰符,但为什么可以将类设置为default,而不是protected。

EN

回答 4

Stack Overflow用户

发布于 2013-12-17 19:22:20

为什么一个类可以作为默认类,但不能作为保护类?

一个更合理的问题应该是,为什么Java可以容忍公共顶级类之外的任何类

允许包私有顶级类的规定已经是对Java最早版本的一种改进,并被嵌套类所取代,如果您愿意,嵌套类可以是protected

票数 1
EN

Stack Overflow用户

发布于 2013-12-17 19:20:05

我希望你指的是顶级类(只能是public或default)。否则,内部类可以有任何修饰符。

当我们说保护时,这意味着它可以从包含受保护实体的类的所有子类中访问(可以是一个类)。

如果最外层的类是受保护的,那么它定义了受保护修饰符的定义。

票数 0
EN

Stack Overflow用户

发布于 2013-12-17 19:21:55

如果您有一个protected内部类或嵌套类,则允许从外部类或类似类的同一个包或子类内部进行访问。

如果你有一个受保护的顶级类,那么就没有外部类可以从中获得访问权限,所以受保护是没有意义的。

来自Ex.的示例它对于要保护的嵌套类型是有效的:

代码语言:javascript
复制
public class Foo {
    protected static class Bar{}
}

这允许Foo的子类访问Bar

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20632682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档