类优先原则: 若一个接口定义了一个默认方法 而另一个父类或接口中又定义了一个同名方法时
选择父类中的方法,如果一个父类提供了具体实现,那么接口中具有同名和参数的默认方法会被忽略
接口冲突:如果一个父接口提供一个默认方法,而另一个接口也提供了具有同名和参数方法(不管方法是不是默认方法)那么实现类必须选择指定覆盖接口方法
package 新特性;
/**
* 类优先原则 若一个接口定义了一个默认方法 而另一个父类或接口中又定义了一个同名方法时
* 选择父类中的方法,如果一个父类提供了具体实现,那么接口中具有同名和参数的默认方法会被忽略
* 接口冲突,如果一个父接口提供一个默认方法,而另一个接口也提供了具有同名和参数方法(不管方法是不是默认方法)那么实现类必须选择指定覆盖接口方法
* @author wangqiangac
* @verion NCC-1.0
* @since 2021-09-10 14:54:05
*/
public class SubClass /* extends MyClass */ implements MyInterface,MyInterfaceTwo{
public static void main(String[] args) {
SubClass sb = new SubClass();
System.out.println(sb.xx());
MyInterface.show();
}
@Override
public String xx() {
// TODO Auto-generated method stub
return MyInterfaceTwo.super.xx();
}
}
package 新特性;
public class MyClass {
public String xx() {
return "嘿嘿嘿";
}
}
package 新特性;
/**
* 接口中的默认方法与静态方法
* @author wangqiangac
* @verion NCC-1.0
* @since 2021-09-10 14:51:53
*/
public interface MyInterface {
/**
* 接口中的默认方法,可以有具体实现
* @return
*/
default String xx() {
return "asdfsdf";
}
/**
* 接口中的静态方法
*/
public static void show() {
System.out.println("接口中的静态方法");
}
}
package 新特性;
public interface MyInterfaceTwo {
/**
* 接口中的默认方法,可以有具体实现
* @return
*/
default String xx() {
return "MyInterfaceTwo";
}
}