我的问题是关于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
提交
取消