美文网首页
一个类实现的多个接口,有相同签名的默认方法

一个类实现的多个接口,有相同签名的默认方法

作者: djnwzs | 来源:发表于2021-02-01 17:32 被阅读0次

    方法运行优先级:类或超类->子接口->父接口

    本文章程序验证均使用Eclipse软件javaSE-15环境

    一、两接口的默认方法各自定义

    interface A {
        default void hello() {
            System.out.println("Hello from A");
        }
    }
    interface B {
        default void hello() {
            System.out.println("Hello from B");
        }
    }
    public class Demo implements A,B{
        public static void main(String[] args) {
            new Demo().hello();
        }
    }
    

    编译报错:
    Duplicate default methods named hello with the parameters () and () are inherited from the types B and A
    必须覆盖(重写)方法,否则报错。

    interface A {
        default void hello() {
            System.out.println("Hello from A");
        }
    }
    interface B {
        default void hello() {
            System.out.println("Hello from B");
        }
    }
    public class Demo implements A,B{
        public void hello(){
            A.super.hello(); //如果这里的A改为B,则运行B中的方法
        }
        public static void main(String[] args) {
            new Demo().hello();
        }
    }
    

    输出Hello from A

    二、接口B继承自接口A

    interface A {
        default void hello() {
            System.out.println("Hello from A");
        }
    }
    interface B extends A {
        default void hello() {
            System.out.println("Hello from B");
        }
    }
    public class Demo implements A,B{
        public static void main(String[] args) {
            new Demo().hello();
        }
    }
    

    优先运行子接口中的方法
    输出Hello from B

    二、接口B接口C继承自接口A

    interface A {
        default void hello() {
            System.out.println("Hello from A");
        }
    }
    interface B extends A {
        
    }
    interface C extends A {
       
    }
    public class Demo implements B,C{
        public static void main(String[] args) {
            new Demo().hello();
        }
    }
    

    输出Hello from A

    相关文章

      网友评论

          本文标题:一个类实现的多个接口,有相同签名的默认方法

          本文链接:https://www.haomeiwen.com/subject/hyhstltx.html