首頁 > 軟體

java基礎之介面組成更新的實現

2022-04-12 13:00:20

1.1 介面組成更新概述

  • 介面的組成
    • 常數:public static final
    • 抽象方法:public abstract
    • 預設方法(Java 8)
    • 靜態方法(Java 8)
    • 私有方法(Java 9)

1.2 介面中預設方法(JDK8)

我們都知道,一個類實現一個介面,就要重寫這個介面中的所有抽象方法。但現在介面中新增了一個方法,實現這個介面的類不想重寫這個方法怎麼辦?這時就可以使用介面中預設方法,它不強制被重寫,而且還可以提供方法體。

  • 介面中預設方法的定義格式:
    • 格式:public default 返回值型別 方法名(參數列){}
    • 範例:public default void show(){}
  • 介面中預設方法的注意事項:
    • 預設方法不是抽象方法,所以不強制被重寫。但是可以被重寫,重寫的時候去掉default關鍵字
    • public可以省略,default不能省略:default void show(){}

1.3 介面中靜態方法(JDK8)

  • 介面中靜態方法的定義格式:

    • 格式:public static 返回值型別 方法名(參數列){}
    • 範例:public static void show(){}
  • 介面中靜態方法的注意事項:

    • 靜態方法只能通過介面名呼叫, 不能通過實現類名或者物件名呼叫
    • public可以省略, static不能省略:static void show(){}
  • 介面

package test;

public interface Inter {
    void show();

    default void method() {
        System.out.println("預設方法");
    }

//    public static void test(){
//        System.out.println("靜態方法");
//    }

    static void test(){
        System.out.println("靜態方法");
    }
}
  • 實現類
package test;

public class InterImpl implements Inter{
    @Override
    public void show() {
        System.out.println("show方法");
    }
}
  • 測試類
package test;

public class Demo {
    public static void main(String[] args) {
        Inter i = new InterImpl();
        i.show(); //show方法
        i.method(); //
//        i.test(); //報錯

        Inter.test(); //靜態方法,介面名呼叫靜態方法
    }
}

1.4 介面中私有方法(JDK9)

Java 9 中新增了帶方法體的私有方法,這其實在 Java 8 中就埋下了伏筆:Java 8 允許在介面中定義帶方法體的預設方法和靜態方法。這樣可能就會引發一個問題:當兩個預設方法或者靜態方法中包含一段相同的程式碼實現時,程式必然考慮將這段實現程式碼抽取成一個共性方法,而這個共性方法是不需要讓別人使用的,因此用私有給隱藏起來,這就是 Java 9 增加私有方法的必然性 。

  • 介面中私有方法的定義格式
    • 格式1(非靜態)private 返回值型別 方法名(參數列){}
    • 範例1:private void show() {}
    • 格式2(靜態)private static 返回值型別 方法名(參數列){}
    • 範例2:private static void method() {}
  • 介面中私有方法的注意事項
    • 預設方法可以呼叫私有的靜態方法和非靜態方法
    • 靜態方法只能呼叫私有的靜態方法
package test;

public interface Inter {
    default void show1() {
        System.out.println("show1開始執行");
//        System.out.println("初級工程師");
//        System.out.println("中級工程師");
//        System.out.println("高階工程師");
//        show();
        method();
        System.out.println("show1結束");
    }


    static void method1() {
        System.out.println("method1開始執行");
//        System.out.println("初級工程師");
//        System.out.println("中級工程師");
//        System.out.println("高階工程師");
        method();
        System.out.println("method1結束");
    }

    private void show(){
        System.out.println("初級工程師");
        System.out.println("中級工程師");
        System.out.println("高階工程師");
    }

    private static void method(){
        System.out.println("初級工程師");
        System.out.println("中級工程師");
        System.out.println("高階工程師");
    }
}

到此這篇關於java基礎之介面組成更新的實現的文章就介紹到這了,更多相關java 介面組成更新內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com