为什么私有,静态,受保护的访问修改器不与类一起使用?

Man*_*shS -1 java

为什么相同,可以用于内部类?

public class Hello {
    class inner{ // this class can use any modifier
    }
}               
Run Code Online (Sandbox Code Playgroud)

Buh*_*ndi 7

Java只允许顶级类/接口为publicpackage.

JLS第7.6节规定(顶级类型声明):

默认情况下,在a package中声明的顶级类型只能在该包的编译单元中访问,但是可以将类型声明为public以从其他包中的代码授予对该类型的访问权(§6.6,§8.1.1, §9.1.1).

接口修饰符的JLS9.1.1节说明:

访问修饰符protected和private 适用于直接封闭类或枚举声明中的成员接口(第8.5.1节).

修饰符static仅适用于成员接口(第8.5.1节,第9.5节), 而不适用于顶级接口(第7.6节).

我希望这很清楚.