函數語言程式設計 - 預設方法
Java 8 引入了一個新的介面預設方法實現的概念。新增此功能是為了向後相容性,以便可以使用舊介面來利用 Java 8 的 lambda 表示式功能。
例如,“List”或“Collection”介面沒有“forEach”方法宣告。因此,新增此方法只會破壞集合框架的實現。Java 8 引入預設方法,以便 List/Collection 介面可以具有 forEach 方法的預設實現,而實現這些介面的類無需實現相同的 forEach 方法。
語法
public interface vehicle {
default void print() {
System.out.println("I am a vehicle!");
}
}
多個預設方法
在介面中使用預設函式時,有可能一個類實現兩個具有相同預設方法的介面。以下程式碼解釋瞭如何解決這種歧義。
public interface vehicle {
default void print() {
System.out.println("I am a vehicle!");
}
}
public interface fourWheeler {
default void print() {
System.out.println("I am a four wheeler!");
}
}
第一個解決方案是建立一個自己的方法來覆蓋預設實現。
public class car implements vehicle, fourWheeler {
public void print() {
System.out.println("I am a four wheeler car vehicle!");
}
}
第二個解決方案是使用 super 呼叫指定介面的預設方法。
public class car implements vehicle, fourWheeler {
default void print() {
vehicle.super.print();
}
}
靜態預設方法
從 Java 8 開始,介面也可以具有靜態輔助方法。
public interface vehicle {
default void print() {
System.out.println("I am a vehicle!");
}
static void blowHorn() {
System.out.println("Blowing horn!!!");
}
}
預設方法示例
使用您選擇的任何編輯器(例如,在 C:\> JAVA 中)建立以下 Java 程式。
Java8Tester.java
public class Java8Tester {
public static void main(String args[]) {
Vehicle vehicle = new Car();
vehicle.print();
}
}
interface Vehicle {
default void print() {
System.out.println("I am a vehicle!");
}
static void blowHorn() {
System.out.println("Blowing horn!!!");
}
}
interface FourWheeler {
default void print() {
System.out.println("I am a four wheeler!");
}
}
class Car implements Vehicle, FourWheeler {
public void print() {
Vehicle.super.print();
FourWheeler.super.print();
Vehicle.blowHorn();
System.out.println("I am a car!");
}
}
驗證結果
使用 **javac** 編譯器編譯該類,如下所示:
C:\JAVA>javac Java8Tester.java
現在執行 Java8Tester,如下所示:
C:\JAVA>java Java8Tester
它應該產生以下輸出:
I am a vehicle! I am a four wheeler! Blowing horn!!! I am a car!
廣告