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 @ 2022-07-05 08:58  ja不会va  阅读(98)  评论(0)    收藏  举报