接口默认方法的 ”类优先“ 原则
若一个接口中定义了一个默认方法,而另一个父类或接口中又定义了一个同名的方法时
选择父类中的方法。如果一个父类提供了具体的实现,那么接口中具有相同名称和参数的默认方法会被忽略
接口冲突。如果一个父接口提供一个默认方法,而另一个接口也提供了一个具有相同名称和参数列表的方法(不管方法是否是默认方法),那么必须覆盖方法来解决冲突。
public interface MyFun {
// 允许有默认方法
default String getName() {
return "hahahaha";
}
}
public class MyClass {
public String getName() {
return "heiheihei";
}
}
public class SubClass extends MyClass implements MyFun {
public static void main(String[] args) {
SubClass subClass = new SubClass();
// 类优先原则
System.out.println(subClass.getName()); // heiheihei
}
}