接口的默認(rèn)方法(Default Methods for Interfaces)
Java 8使我們能夠通過使用 default 關(guān)鍵字向接口添加非抽象方法實(shí)現(xiàn)过蹂。 此功能也稱為虛擬擴(kuò)展方法笛园。
第一個(gè)例子:
interface Formula{
? ? double calculate(int a);
? ? default double sqrt(int a) {
? ? ? ? return Math.sqrt(a);
? ? }
}
Formula 接口中除了抽象方法計(jì)算接口公式還定義了默認(rèn)方法 sqrt匈庭。 實(shí)現(xiàn)該接口的類只需要實(shí)現(xiàn)抽象方法 calculate条篷。 默認(rèn)方法sqrt 可以直接使用伤溉。當(dāng)然你也可以直接通過接口創(chuàng)建對(duì)象妒茬,然后實(shí)現(xiàn)接口中的默認(rèn)方法就可以了仰美,我們通過代碼演示一下這種方式迷殿。
public class Main {
? public static void main(String[] args) {
? ? // TODO 通過匿名內(nèi)部類方式訪問接口
? ? Formula formula = new Formula() {
? ? ? ? @Override
? ? ? ? public double calculate(int a) {
? ? ? ? ? ? return sqrt(a * 100);
? ? ? ? }
? ? };
? ? System.out.println(formula.calculate(100));? ? // 100.0
? ? System.out.println(formula.sqrt(16));? ? ? ? ? // 4.0
? }
}