Java 8 允许我们通过 default 关键字对接口中定义的抽象方法提供一个默认的实现。
请看下面示例代码:
// 定义一个公式接口
interface Formula {
// 计算
double calculate(int a);
// 求平方根
default double sqrt(int a) {
return Math.sqrt(a);
}
}
在上面这个接口中,我们除了定义了一个抽象方法 calculate,还定义了一个带有默认实现的方法 sqrt。 我们在实现这个接口时,可以只需要实现 calculate 方法,默认方法 sqrt 可以直接调用即可,也就是说我们可以不必强制实现 sqrt 方法。
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 接口,其中sqrt 方法不需要强制实现,即不需要@override去覆写该方法。
相关文章
java 接口中的方法只能是抽象的吗?