什么是默认方法呢
就是在接口中有实现方法,并且接口实现类不需要实现该方法,接口中的默认方法使用关键字default修饰。
源码例子
@FunctionalInterface
public interface Predicate<T> {
default Predicate<T> negate() {
return (t) -> !test(t);
}
}
为什么要加入这个特性呢
在这个版本之前的版本是面向抽象编程,接口有变动,那么实现类也会跟着变动,修改起来工作量大启麻烦,所以引入默认方法。
需要注意的是
一个类实现多个接口,且接口都有相同的默认方法。实现类具体使用哪个方法,需要指明。
方式一
实现类覆盖该方法。
方式二
使用Super.接口.方法调用指定接口的默认方法。
静态默认方法
Java 8 的另一个特性是接口可以声明(并且可以提供实现)静态方法。
public interface TestInterface{
default void print(){
System.out.println("我!");
}
// 静态方法
static void print2(){
System.out.println("我!!");
}
}