175/176接口的默认方法定义和使用

接口的默认方法定义

从java8  开始,接口里允许定义默认方法

格式:

  public default  返回值类型  方法名称(参数列表){

    方法体

  }

备注:接口当中的默认方法,可以解决接口升级的问题

//这些都是抽象方法
    public boolean void demo01():
    abstract void demo02();
    public void demo03();
    void demo04();

接口的默认方法使用

 

复制代码
接口类
public
interface MyInterfaceDefault { public abstract void method(); //新添加的方法,改成默认方法 public default void methodfefault(){ System.out.println("这是新添加的默认方法"); } } 实现类 public class MyInterfaceDefaultA implements MyInterfaceDefault{ @Override public void method() { System.out.println("a"); } } public class MyInterfaceDefaultB implements MyInterfaceDefault{ @Override public void method() { System.out.println("b"); }} 测试类 public static void main(String[] args) { //创建了实现类对象 MyInterfaceDefaultA myInterfaceDefaultA = new MyInterfaceDefaultA(); myInterfaceDefaultA.method();//调用抽象方法,实际运行的事右侧实现类 //调用默认方法,如果实现类当中没有,会向上找借口 myInterfaceDefaultA.methodfefault();//这是新添加的默认方法 System.out.println("================="); MyInterfaceDefaultB myInterfaceDefaultB = new MyInterfaceDefaultB(); myInterfaceDefaultB.method(); myInterfaceDefaultB.methodfefault();//实现类b覆盖重写了借口的默认方法 }
复制代码

 

复制代码
package insping;
public interface MyInterface {
    int add(int x, int y);
    // 默认方法
    default int multiply(int x, int y) {
        return x * y;
    }
}


package insping;
public class MyClass implements MyInterface {
    @Override
    public int add(int x, int y) {
        return x+y;
    }
}


package insping;
public class Test {
    public static void main(String[] args) {
        MyInterface intRef = new MyClass();
        System.out.println("和 = " + intRef.add(5, 10));
        System.out.println("乘 = " + intRef.multiply(5, 10));
    }
}
复制代码
复制代码
public interface MyInterfaceDefault {
    public abstract void methodAbs();
    //public  abstract void metgodAbs2();
    //新添加的方法,改成默认方法
    public default void methodDefacult(){
        System.out.println("这是新添加的默认方法");
    }
}



public class MyInterfaceDefaultA implements MyInterfaceDefault {
    @Override
    public void methodAbs() {
        System.out.println("实现类抽象方法,AAA");
    }
}




public class Demo02Interface {
    public static void main(String[] args) {
        //创建了实现类
        MyInterfaceDefaultA a = new MyInterfaceDefaultA();
        a.methodAbs();//调用抽象方法,实际运行的是右侧实现类

        a.methodDefacult();
    }
}



public class Demo02Interface {
    public static void main(String[] args) {
        //创建了实现类
        MyInterfaceDefaultA a = new MyInterfaceDefaultA();
        a.methodAbs();//调用抽象方法,实际运行的是右侧实现类

        a.methodDefacult();
    }
}
复制代码

 

 

 

posted @   ja不会va  阅读(91)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示