实战演示
默认方法冲突
接口中有了默认方法,就引发了一个问题,假如一个类继承了一个父类和接口,接口的默认方法名和父类的一个方法名相同,怎么办?
public interface IUSB {
default void insert(){
System.out.println('IUSB:插入USB');
}
default void insert(String name){
System.out.println('IUSB:插入USB'+name);
}
}
public class USB extends Template implements IUSB{
public static void main(String[] args) {
USB usb=new USB();
usb.insert();
usb.insert('手机');
}
// public void insert(String name){
// System.out.println('USB:插入接口'+name);
// }
}
结果:
Template:插入USB
IUSB:插入USB手机
接口默认方法有什么意义
在jdk8中接口新增了默认方法,在jdk8以前,接口中的所有方法都是没有方法体的抽象方法,实现了该接口的类都需要实现接口中的所有方法。现在如果有一个接口和很多个实现该类的接口情景1:假如我们需要在接口中新增一个方法供部分类使用,那么在jdk8以前,我们可以通过new一个抽象类然后抽象类继承这个接口,抽象类新增一个方法,然后让部分类继承抽象类就好了。情景假如我们需要在接口中新增一个方法供所有类使用,在jdk8以前,我们需要新建一个抽象类,在抽象类加一个方法,然后所有类继承抽象类,但是这其实还是很麻烦,毕竟所有类都需要修改现在,接口中可以使用默认方法,这样所有类都可以使用或者覆盖接口的默认方法,可以很方便的解决以上问题。
基础使用
public interface IUSB {
default void insert(){
System.out.println('IUSB:插入USB');
}
default void insert(String name){
System.out.println('IUSB:插入USB'+name);
}
}
总结
上面是接口和父类的方法冲突,那么两个接口的默认方法冲突会怎么样?在上面代码的基础上新加一个接口,并让实现类实现这个类
public interface IUSB2 {
default void insert(String name){
System.out.println('ISUB2:插入USB'+name);
}
}
public class USB extends Template implements IUSB,IUSB2{
public static void main(String[] args) {
USB usb=new USB();
usb.insert();
usb.insert('手机');
}
// public void insert(String name){
// System.out.println('USB:插入接口'+name);
// }
}
文章为作者独立观点,不代表股票交易接口观点