虽然默认修饰符的可见性低于修饰符继承中受保护的可见性,但为什么可以将一个类设为默认但不能设为受保护。
问问题
184 次
4 回答
1
为什么一个类可以设为默认但不能设为受保护?
一个更明智的问题是,为什么 Java 容忍除了公共顶级类之外的任何东西?
允许包私有顶级类的规定已经是对 Java 最早版本的一种破解,对嵌套protected
类进行了改进和取代,如果您愿意,可以这样做。
于 2013-12-17T11:22:20.333 回答
0
如果您有protected
内部类或嵌套类,则允许从相同包或外部类的子类或类似的东西内部进行访问。
如果您有一个受保护的顶级类,则没有外部类可以让子类从中获取访问权限,因此受保护是没有意义的。
来自Ex 的示例。但是,保护嵌套类型是有效的:
public class Foo {
protected static class Bar{}
}
这允许子类Foo
访问Bar
.
于 2013-12-17T11:21:55.177 回答
0
类可以被保护!即内部类可以被保护。
class A{
protected class C{
}
}
当我们谈论继承(扩展)时,Protedted 就出现了。这就是为什么我们不能将继承上下文之外的任何东西作为受保护的。!
于 2013-12-17T11:24:25.503 回答
0
我希望您的意思是顶级课程(只能是公共的或默认的)。否则内部类可以有任何修饰符。
当我们说受保护时,它意味着它可以从包含受保护实体的类的所有子类中访问(可以是一个类)。
如果最外面的类是受保护的,那么它定义了受保护修饰符的定义。
于 2013-12-17T11:20:04.797 回答