179/180接口的私有方法的定义和使用
接口的私有方法定义
问题描述:
我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题。但是这个共有方法不应该让实现类使用,应该是私有化的。
解决方案:
从Java9开始,接口当中允许定义私有方法。
1.普通私有方法,解决多个默认方法之间重复代码问题
格式:
private返回值类型方法名称(参数列表){
方法体
}
2.静态私有方法,解决多个静态方法之阅重复代码间题
格式:
private static返回值类型方法名称(参数列表){
方法体
}
接口的私有方法使用
public interface MyInterfaceStatic {
public default void methodDefault1() {
System.out.println("默认方法1");
methodCommon();
}
public default void methodDefault2() {
System.out.println("默认方法2");
methodCommon();
}
public default void methodCommon() {
System.out.println("AAA");
System.out.println("BBB");
System.out.println("cCC");
}
}
实例: 重写接口 public interface MyInterfacePrivateB { public static void methodStatic1(){ System.out.println("静态方法1"); methodStaticCommon(); } public static void methodStatic2(){ System.out.println("静态方法2"); methodStaticCommon(); } //如果jdk不是java 9 此处会报错,报错内容“make not methodStaticCommon private” private static void methodStaticCommon(){ System.out.println("AAA"); System.out.println("BBB"); System.out.println("BBB"); } } 对接口的引用 public class Demo04Interface { public static void main(String[] args) { MyInterfacePrivateB.methodStatic1();; MyInterfacePrivateB.methodStatic2(); } }
public interface MyInterfacePrivateA { public default void methodDefault1() { System.out.println("默认方法1"); methodCommon(); } public default void methodDefault2() { System.out.println("默认方法2"); methodCommon(); } private void methodCommon() { System.out.println("AAA"); System.out.println("BBB"); System.out.println("CCC"); } } public class MyInterfacePrivateAImpl implements MyInterfacePrivateA { public void methodAnother() { // 直接访问到了接口中的默认方法,这样是错误的! // methodCommon(); } } public interface MyInterfacePrivateB { public static void methodStatic1() { System.out.println("静态方法1"); methodStaticCommon(); } public static void methodStatic2() { System.out.println("静态方法2"); methodStaticCommon(); } private static void methodStaticCommon() { System.out.println("AAA"); System.out.println("BBB"); System.out.println("CCC"); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本