我的問題是關于interface. 我創建了一個接口并定義了四個方法:第一個方法是一個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}接口配置文件類 D:\Linux\IDE\Workspace\OCA-Wrokspace\Ocaexam\src>javap mods\com\doubt\session\InterfaceProfile.classCompiled from "InterfaceProfile.java"interface com.doubt.session.InterfaceProfile { public void defaultM(); public static void staticM(); public abstract void doStuff();}
3 回答

翻過高山走不出你
TA貢獻1875條經驗 獲得超3個贊
默認修飾符是公共的,因為這是定義接口聲明的方式: https ://docs.oracle.com/javase/tutorial/java/IandI/interfaceDef.html
如果你問這背后的原因,我認為定義接口的目的是確保所有實現類的接口,這意味著所有實現類都有明確的約定,它們需要提供哪些公共可訪問方法.
向接口添加私有方法并不能滿足這個主要目的,而且似乎更像是一種實現提示。私有和抽象方法是對接口的后期添加。
添加回答
舉報
0/150
提交
取消