傳統接口方法皆為 public abstract,新增方法會強制所有實現類重寫,破壞二進制兼容。Java 8 引入 默認方法 與 靜態方法,實現接口平滑演進。
interface IMessage {
void print(); // 抽象方法
default void fun() { // 默認方法
System.out.println("接口中的默認實現");
}
}
class MessageImpl implements IMessage {
@Override public void print() {
System.out.println("實現類覆寫抽象方法");
}
// fun() 可直接繼承,也可選擇性覆寫
}
default,提供方法體,實現類可選擇繼承或覆寫。Object 的方法(toString/equals/hashCode),否則編譯報錯。msg.fun()。interface IMessage {
static void funStatic() {
System.out.println("接口靜態方法");
}
}
static,屬於接口本身,不可被實現類繼承/覆寫。IMessage.funStatic()(類似工具類)。InterfaceA.super.fun()。默認方法讓集合框架(如 Collection.stream())無需破壞現有實現即可擴展;靜態方法替代傳統工具類(如 Collections.emptyList() → List.empty()),提升內聚性。