#介面(Interface)
範例:日誌系統中的介面
java
interface Logger {
void log(String message); // 抽象方法
default void error(String message) {
System.out.println("ERROR: " + message);
}
static void info(String message) {
System.out.println("INFO: " + message);
}
}
class FileLogger implements Logger {
@Override
public void log(String message) {
System.out.println("Logging to file: " + message);
}
}
class ConsoleLogger implements Logger {
@Override
public void log(String message) {
System.out.println("Logging to console: " + message);
}
}
這裡,Logger介面定義了 log()方法,並提供了 error()的預設實現(使用 default),而 info()是一個靜態方法,可以直接通過介面名稱調用。
#介面與抽象類的區別
·抽象類是一個類,通常用於表示具有部分共同行為和屬性的對象,它允許具體方法和抽象方法並存,還可以包含字段。
·介面是一個契約,強制實現類去遵守某些行為約定,並不涉及具體實現(除了 Java 8 之後的 default和 static方法)。
-選擇時機:
·當你需要表示多個類共享某些具體實現或狀態時,應該使用抽象類
·當不同類之間有共同行為,但它們不一定共享結構或狀態時,應該使用介面。
這樣的設計可以讓系統更靈活,支付處理器、日誌記錄器等應用場景都可以根據需求自由擴展不同的具體實現。