1. 程式人生 > >Java8新特性之:默認方法

Java8新特性之:默認方法

java8 默認方法

一. 默認方法

1.默認方法的使用模式:

-- 可選方法

類實現了接口,但是刻意地將一些方法留白。

public interface Iterator<E> {
    boolean hasNext();
    E next();
    default void remove() {
        throw new UnsupportedOperationException("remove");
    }
}


-- 行為的多繼承

讓類從多個來源重用代碼。

-- 繼承多個接口;

-- 利用正交方法的精簡接口:

public interface Resizable {
    int getWidth();
    int getHeight();
    void setWidth(int width);
    void setHeight(int height);
    void setAbsoluteSize(int width, int height);
    default void setRelativeSize(int wFactor, int hFactor) {
        setAbsoluteSize(getWidth() / wFactor, getHeight() / hFactor);
    }
}


2.解決沖突的規則

沖突的場景:一個類實現了多個接口和父類的方法而它們使用的卻是同樣的函數簽名。

規則:

(1)類中的方法優先級最高。類或父類中聲明的方法優先級高於任何聲明為默認方法的優先級。

(2)如果無法依據第一條進行判斷,那麽子接口的優先級更高:函數簽名相同時,優先級選擇擁有最具體實現的默認方法的接口,如果B繼承了A,那麽B就比A更具體。

(3)最後,如果還是無法判斷,繼承了多個接口的類必須通過顯式覆蓋和調用期望的方法,顯式地選擇使用哪一個默認方法的實現。(X.super().method(...))


Java8新特性之:默認方法