如前所述,Java 8 引入了預設方法,允許介面擁有帶有主體的方法。引入此功能是為了支援向後相容性,同時發展 Java API 中的介面。
何時使用預設方法:
但是,如果過度使用,預設方法可能會使您的介面變得臃腫。它們應該保留用於預設行為在許多實作中確實有幫助的情況。
範例:
public interface Movable { void move(); default void stop() { System.out.println("Movement stopped."); } }
在此範例中,stop() 提供了一個預設實現,可以由任何實作 Movable 介面的類別覆寫。
Java 8 的介面中也引入了靜態方法。這些方法屬於介面本身,而不屬於實作該介面的類別的任何實例。這允許您提供與介面功能直接相關的實用方法。
何時使用靜態方法:
範例:
public interface Calculator { int calculate(int a, int b); static int add(int a, int b) { return a + b; } }
這裡,add() 方法是一個實用函數,無需建立任何實作 Calculator 的類別的實例即可呼叫。
最佳實務:對邏輯上屬於介面域的實用函數使用靜態方法。避免將它們用於任何可能需要覆蓋的功能。
函數式介面是一種只有一個抽象方法的介面。隨著 Java 8 中引入 lambda 表達式,這個概念變得特別強大,它允許您編寫更簡潔和可讀的程式碼。
函數式介面範例:
@FunctionalInterface public interface Processor { void process(String input); }
可以使用lambda表達式來簡潔地實作此介面:
Processor processor = input -> System.out.println("Processing: " + input); processor.process("Data");
何時使用函數式介面:
提示: 利用 @FunctionalInterface 註解來確保介面維持功能,也就是只有一個抽象方法。
為可列印、掃描和傳真的多功能設備設計一個系統。考慮如何使用介面、抽象類別、預設方法和靜態方法來設計這個系統。常見的行為是什麼,以及如何在每個函數的實作中實現彈性?
以上是介面中的預設方法和靜態方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!