java 8 允许你在接口中添加非抽象方法 , 这些方法必须定义为 default 方法 , java 8 引入默认方法是为了使用 lambda 函数表达式 .
default 方法使您能够向库的接口添加新功能,并确保与旧版本的这些接口编写的代码的二进制兼容性 。
用一个例子去理解:
public interface Moveable {
default void move() {
System.out.println("I am moving");
}
}
Moveable 接口定义了一个 move() 方法并且提供了默认的实现 . 如果任意一个 class 实现这个接口都没有必要去实现这个 move() 方法,能够直接使用 instance.move() 进行调用 .
eg:
public class Animal implements Moveable{
public static void main(String[] args){
Animal tiger = new Animal();
tiger.move();
}
}
Output: I am moving
如果该 class 想要自定义一个 move() ,也能提供自定义的实现去覆写这个 move 方法 .