Java8 的 default 和static 的一些筆記

1. default和static關鍵字

    a.   default 用在接口中, 爲該接口的實現類的方法.  --> 不能通過接口直接調用.  
           static 也是用在接口中, 同Class中的static方法一樣, 是類級別的方法, 而不是對象的方法.  --> 可以通過接口直接調用. 
    b. 一個接口可以有多個default方法, 也可以有多個static方法.

2. default 在使用中的注意事項

如下面的例子, 
有兩個接口, InterA和InterB, 都有一個方法, 爲defaultFunction(), 
ClassA僅僅爲InterA的實現類. 那麼沒有報錯. 當調用ClassA的defaultFunction()時, 會自動調取InterA的方法.
但是ClassAB同時爲InterA和InterB的實現類. 當調用ClassAB的defaultFunction()時, 不知道該調取哪個接口的了, 所以, ClassAB需要自己重寫這個方法. 

 

3. Static則和default不同, 

打印結果

4. 源碼

public class DefaultDemoApp {
    public static void main(String[] args) {
        new ClassA().defaultFunction();
        new ClassAB().defaultFunction();
    }
}

interface InterA {
    default void defaultFunction() {
        System.out.println("This is A defaultFunction");
    }

    static void staticFunction() {
        System.out.println("This is A status function");
    }
}

interface InterB {
    default void defaultFunction() {
        System.out.println("This is B defaultFunction");
    }

    static void staticFunction() {
        System.out.println("This is B status function");
    }
}

class ClassA implements InterA {

}

class ClassAB implements InterA, InterB {
    @Override
    public void defaultFunction() {
        InterB.staticFunction();
    }
}

 

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