java8新特性:接口中的默认方法和静态方法
接口默认方法“类优先原则”
若一个接口中定义了一个默认方法,另一个的父类或接口中又定义一个同名方法时:
- 选择父类方法。如果一个父类提供了具体实现,那么,接口中具有同名称的方法和参数将会被忽略。
示例:
父类
public class MyClass {
public String getName(){
return "嘿嘿嘿";
}
}
接口
public interface MyFun {
default String getName(){
return "哈哈哈";
}
}
子类
public class SubClass extends MyClass implements MyFun{
}
运行结果:
接口冲突:如果一个父接口提供一个默认方法,而另一个接口也提供一个具有相同名称和参数列表的方法(不管这个方法是否是默认方法),那么必须覆盖该方法来解决冲突
示例:
第二个接口:
public interface MyInterface {
default String getName(){
return "呵呵呵";
}
}
子类:
public class SubClass implements MyFun, MyInterface{
@Override
public String getName() {
return MyInterface.super.getName();
}
}
这里实现类父接口MyInterface的方法,所以结果如下
java8中接口中允许添加静态方法
例如
public interface MyInterface {
public static void show(){
System.out.println("接口中的静态方法");
}
}