Java
8允许我们给接口添加一个非抽象的方法实现,只需要使用default关键字即可,这个特征又叫做扩展方法,示例如下:
interface
Formula
{
double
calculate
(
int
a
)
;
default
double
sqrt
(
int
a
)
{
return
Math
.
sqrt
(
a
)
;
}
}
Formula接口在拥有calculate方法之外同时还定义了sqrt方法,实现了Formula接口的子类只需要实现一个calculate方法,默认方法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被实现为一个匿名类的实例,该代码非常容易理解,6行代码实现了计算 sqrt(a * 100)。
|