java8之接口加強

  Java8是由oracle公司於2014年3月正式發佈,它是繼java5 以來最重要的發佈版本。Java8包含了不少新的特性,能夠簡化開發,提高代碼的可讀性。java

  Java8的一些重要新特性包括:oracle

      l 接口加強ide

      l 方法引用學習

      l Lambda表達式spa

      l Streamcode

  其中還有一些其餘的特性,好比註解的更新,以及一些新的API等。以上四個特性在java8的開發中會比較經常使用。由於接口加強特性比較獨立,而其餘三個特性或多或少都有關聯關係。這裏先記錄下接口加強特性的學習筆記。blog

1.什麼是接口加強?接口

  在java8之前的版本中,定義一個接口時,全部的方法必須是抽象方法,不能有具體實現,這是java語法規定的。可是在java8中定義一個接口時,在知足特定的前提下,能夠有方法的具體實現。這樣一個接口中能夠有屬性,能夠有抽象方法,也能夠有具體的方法,這跟java8之前的接口比,明顯接口的功能變得強大了。ip

2.接口中如何定義具體的方法實現?開發

  首先,接口中定義具體的方法實現是有限制的,它不能像咱們在一個普通類那樣隨便定義方法實現,它只能定義defaultstatic類型的方法。示例代碼以下:

interface MyInterface {
    public void print();

    // default 和 static 方法的出現爲了解決實現該接口的子類代碼重複的問題
    default void defaultMethod() {
        System.out.println("default method invoked! ");
    }
    
    default int add(int a, int b){
        return a + b;
    }
    
    static void staticMethod() {
        System.out.println("static method invoked! ");
    }
    
    static int multiply(int a, int b){
        return a * b;
    }
    
    //...
}
View Code

  除了關鍵字修飾,其餘跟普通的方法定義並無什麼不一樣。

3.如何調用

  1)default方法調用

  定義一個類實現該接口,new該類的實例,調用便可。

  2)static方法調用

  類名.方法名() 調用,這跟之前的靜態方法調用方式同樣。

  示例代碼以下:

public class InterfaceTest {
    public static void main(String[] args) {
        
        MyInterface msg = new InterfaceImpl();
        msg.print();

        msg.defaultMethod(); //調用default方法
        MyInterface.staticMethod(); //調用static方法
    }
}

interface MyInterface {
    public void print();

    // default 和 static 方法的出現爲了解決實現該接口的子類代碼重複的問題
    default void defaultMethod() {
        System.out.println("default method invoked! ");
    }
    
    default int add(int a, int b){
        return a + b;
    }
    
    static void staticMethod() {
        System.out.println("static method invoked! ");
    }
    
    static int multiply(int a, int b){
        return a * b;
    }
    
    //...
}
View Code

 

4. 應用場景

  想象這樣一中狀況,當多個類實現一個接口的某個方法時,方法的具體實現代碼相同,這樣就會形成代碼重複問題。接口加強就至關於把公共的代碼抽離出來,放入接口定義中,這樣實現類對於該方法就不用從新定義,直接調用便可,這很好的解決了實現該接口的子類代碼重複的問題。

相關文章
相關標籤/搜索