【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方法解决冲突