1

虽然默认修饰符的可见性低于修饰符继承中受保护的可见性,但为什么可以将一个类设为默认但不能设为受保护。

4

4 回答 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 回答