使用Java中的抽象方法签名的可见性修饰符

cod*_*er5 3 java modifier keyword

快速提问:

是正确的语法:

public abstract void myMethod();
Run Code Online (Sandbox Code Playgroud)

要么

abstract public void myMethod();
Run Code Online (Sandbox Code Playgroud)

...区别在于关键字的顺序publicabstract.

两者都编译没有警告,但这是正确的语法?

Ran*_*Rag 6

根据JLS第8.1.1节

ClassModifier: one of
    Annotation public protected private
    abstract static final strictfp 
Run Code Online (Sandbox Code Playgroud)

如果两个或多个类修饰符出现在类声明中,则通常(尽管不是必需的)它们按照与上面在ClassModifier的制作中所示的顺序一致的顺序出现.