【Java SE】默认方法冲突

 

interface Named {
    default void getName() {
        System.out.println("named");
    }
}
interface Show {
    default void getName() {
        System.out.println("show");
    }
}
class Person {
    public void getName() {
        System.out.println("person");
    }
}

规则

1、超类优先

超类和接口的默认方法同名且参数相同时,超类方法会覆盖接口的默认方法。

class Student extends Person implements Named, Show {
}
Person超类的getName方法覆盖了接口Named、Show的getName方法

2、接口冲突

实现的两个接口具有同名且参数类型相同的方法,必须通过覆盖方法来解决冲突。

class Student implements Named, Show {
    public void getName() {
        System.out.println("student");
    }
}
必须自己实现getName方法解决冲突

 

posted @ 2022-04-04 11:44  翠微  阅读(29)  评论(0编辑  收藏  举报