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");
    }

}
复制代码

 

 

posted @   ja不会va  阅读(106)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示