シャルマ:
私の質問はについてですinterface
。私は、インターフェイスを作成し、4つのメソッドを定義する:第一の方法であるprivate
方法。第二は、あるdefault
方法。第三は、static
方法。第四であるabstract
方法。
このインタフェースをコンパイルし、そのプロファイルを確認し:default
この方法は、に変換されるpublic
方法、及び両方static
とabstract
方法がプリペンド有するpublic
修飾子を。どうしてこれなの?
コード:
interface InterfaceProfile {
private void privateM() { //this method is hidden
System.out.println("private Method");
}
default void defaultM() {
System.out.println("Default Method");
}
static void staticM() {
System.out.println("Static Method");
}
void doStuff(); //by default adds the public modifier
}
InterfaceProfileクラス
D:\Linux\IDE\Workspace\OCA-Wrokspace\Ocaexam\src>javap mods\com\doubt\session\InterfaceProfile.class
Compiled from "InterfaceProfile.java"
interface com.doubt.session.InterfaceProfile {
public void defaultM();
public static void staticM();
public abstract void doStuff();
}
GhostCat敬礼モニカC.:
シンプル:デフォルトでは、インターフェイスのすべてのメソッドである公共。あなたはできる制限適用しているがprivate
、しかし、中にあなたがそれをしない時はいつでも、そのデフォルトのキックしたがって:ありません何のすべてで起こる変換が。
引用Java言語仕様を:
インタフェースの体内の方法は、(6.6)パブリックまたはプライベート宣言することができます。何のアクセス修飾子が指定されていない場合、この方法は、暗黙的にパブリックです。それは許されますが、冗長インターフェイスのメソッド宣言のための公共の修飾子を指定するには、スタイルの問題として推奨されません。
人々は、Java 8のデフォルトの方法は、多くの場合も、持っている必要性を作成したことを発見したとして(インタフェースでプライベートメソッドを持っている能力は、Javaの9で導入された、そのようなデフォルトの方法は、一般に公開これらのヘルパーメソッドをせずに、を使用することができることをプライベートメソッド)