Java8的通过使用default关键词加入非抽象方法实现到接口。这个特性也被称之为虚拟扩展方法。下面是一个例子:
定义一个接口
interface Formula {
double calculate(int a);
default double sqrt(int a) {
return Math.sqrt(a);
}
}
接口实现
Formula formula = new Formula() {
@Override
public double calculate(int a) {
return sqrt(a * 100);
}
};
formula.calculate(100); // 100.0
formula.sqrt(16); // 4.0
这个formula作为一个匿名对象实现的。6行代码实现了sort(a*100)的计算器。