1、基础介绍
java8中允许接口中包含具有具体实现的方法,该方法被称为默认方法,默认方法使用default关键
接口中允许添加静态方法。
2、代码:
public interface Test1 {
int getId();
default String getName(){
return "11";
}
}
public interface Test2 {
default String getName(){
return "222";
}
public static void show(){
System.out.println("000000");
}
}
3、类优先
选择父类中的方法。如果一个父类提供了具体的实现,那么
接口中具有相同名称和参数的默认方法会被忽略。
public interface Test2 {
default String getName(){
return "222";
}
}
public class Test3 implements Test2
@Override
public String getName() {
return "333";
}
public static void main(String[] args) {
System.out.println(new Test3().getName());
Test2.show();
// 输出:333
// 000000
}
}
4、接口冲突
如果一个父接口提供一个默认方法,而另一个接口也提供了一个具有相同名称和参数列表的方法(不管方法是否是默认方法),那么必须覆盖该方法来解决冲突