每天一分鐘來一顆Java語法糖(七)接口的默認方法

每天一分鐘來一顆Java語法糖(七)接口的默認方法

接口的默認方法引入版本

  • Java1.8推出了接口的默認方法/靜態方法(都帶實現的),爲Lambda表達式提供支持

接口的默認方法介紹

  • Java最初設計時,接口的方法都是沒有實現的、公開的。Java1.8以後接口可以有實現的方法。

接口的默認方法注意事項

  • 以default 關鍵字標註,其他的定義和普通方法一樣。
  • 默認方法不能重寫Object中的方法
  • 實現類可以繼承/重寫父接口的默認方法
  • 當父類和父接口都有(同名同參數)默認方法,子類繼承父類的默認方法,這樣可以兼容JDK7及以前的代碼
  • 子類實現了2個接口(均有同名同參數的默認方法),那麼編譯失敗,必須在之類中重寫這個default方法。
  • 接口實現的靜態方法屬於本接口的,不屬於子類/子接口
  • 接口實現的靜態方法,子類、子接口不繼承該靜態方法,只能通過所在的接口名來調用

接口的默認方法演示

public class Test {
    public static void main(String[] args) {
        Fruit.showTaste();
        Fruit apple = new Apple();
        apple.buy();
        Fruit orange = new Orange();
        orange.buy();
    }
}
public interface Fruit {
    static void showTaste() {
        System.out.println("水果都很美味");
    }

    default void buy() {
        System.out.println("購買水果!");
    }
}
public class Apple implements Fruit {

}
public class Orange implements Fruit {
    @Override
    public void buy() {
        System.out.println("購買橘子");
    }
}

效果如下
在這裏插入圖片描述
如果是static的不能用子類去調用
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章