Java中带有抽象方法签名的可见性修饰符

Posted

技术标签:

【中文标题】Java中带有抽象方法签名的可见性修饰符【英文标题】:Visibility modifier with abstract method signatures in Java 【发布时间】:2012-02-01 21:36:54 【问题描述】:

快速提问:

语法是否正确:

public abstract void myMethod();

abstract public void myMethod();

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

两者都编译时没有警告,但哪种语法正确?

【问题讨论】:

【参考方案1】:

根据JLS section 8.1.1

ClassModifier: one of
    Annotation public protected private
    abstract static final strictfp 

如果两个或多个类修饰符出现在一个类声明中,那么它 习惯上,虽然不是必需的,但它们按顺序出现 与上面生成的 ClassModifier 中显示的一致。

【讨论】:

【参考方案2】:

两者都是“适当的”。区别在于风格问题。我更喜欢第一个。

【讨论】:

【参考方案3】:

两者在语法上都是正确的,但是

public abstract void myMethod();

更常见。您通常先声明可见性。

【讨论】:

【参考方案4】:

最常见的做法是public abstract。我实际上不记得任何例子或书籍或我使用过的任何代码都起到相反的作用。

【讨论】:

以上是关于Java中带有抽象方法签名的可见性修饰符的主要内容,如果未能解决你的问题,请参考以下文章

对比Java学Kotlin可见性修饰符

对比Java学Kotlin可见性修饰符

对比Java学Kotlin可见性修饰符

java修饰符和基本操作符

访问修饰符是 C# 中方法签名的一部分吗?

java学习手札修饰符