パブリックアクセス修飾子を使用するかどうかに関わらず、Javaインタフェースのメソッドを宣言する必要がありますか?


Answers

Javaインタフェースでpublic修飾子を省略する必要があります(私の意見では)。

それは余分な情報を追加しないので、重要なものから注意を引くだけです。

ほとんどのスタイルガイドはあなたがそれを残しておくことを推奨しますが、もちろん、最も重要なことは、コードベース全体、特に各インターフェイスについて一貫していることです。 次の例では、Javaに100%慣れていない人を簡単に混乱させる可能性があります。

public interface Foo{
  public void MakeFoo();
  void PerformBar();
}
Question

publicアクセス修飾子を使用するかどうかに関わらず、Javaインタフェースのメソッドを宣言する必要がありますか?

技術的にはそれは問題ではありません。 interfaceを実装するクラスメソッドは常にpublicです。 しかし、より良いコンベンションは何ですか?

Java自体は一貫していません。 例えばCollectionComparable 、またはFutureScriptEngine参照してください。




私はデフォルトで適用される修飾子を置くことを避けるでしょう。 指摘されているように、それは不一致と混乱につながる可能性があります。

私が見た最悪ののは、 abstractと宣言されたメソッドとのインタフェースです...




私は、インタフェースがなく、私が直接実装を書いていた場合には、私が使うものを書いています。つまり、私はpublicを使います。




私はそれをスキップすることを好む、私はどこかのインターフェイスは、デフォルトでpublicabstractです読んでください。

驚いたことに本のHead First Design Patternsは 、インターフェース宣言とインターフェースメソッドをpublicしています。これは私にもう一度考え直させ、私はこの投稿に上陸しました。

とにかく、冗長な情報は無視すべきだと私は思う。




それは完全に主観的です。 私はそれが混乱のように見えるので、冗長なpublic修飾子を省略します。 他の人が述べたように、一貫性がこの決定の鍵です。

C#言語の設計者がこれを強制することに決めたことは興味深いことです。 C#でインタフェースメソッドをpublicとして宣言するのは、実際にはコンパイルエラーです。 一貫性はおそらく言語間では重要ではないので、これはJavaに直接関係しません。




Links