# 允許在接口中有默認方法實現
Java 8 允許我們使用default關鍵字,為接口聲明添加非抽象的方法實現。這個特性又被稱為**擴展方法**。下面是我們的第一個例子:
```
interface Formula {
double calculate(int a);
default double sqrt(int a) {
return Math.sqrt(a);
}
}
```
在接口Formula中,除了抽象方法caculate以外,還定義了一個默認方法sqrt。Formula的實現類只需要實現抽象方法caculate就可以了。默認方法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對象以匿名對象的形式實現了Formula接口。代碼很啰嗦:用了6行代碼才實現了一個簡單的計算功能:a*100開平方根。我們在下一節會看到,Java 8 還有一種更加優美的方法,能夠實現包含單個函數的對象。