Java 8 的
default方法彻底改变了接口的基因,让僵化的契约获得了血肉之躯。这不仅是语法糖,更是一场面向对象设计的静默革命。
一、接口的困境
在 Java 8 之前,接口是纯粹的抽象契约:
public interface OldPaymentService {
void processPayment(double amount); // 纯抽象方法
String getProviderName(); // 所有实现类必须重写
}
-
新增方法如
refund会强制所有实现类修改 -
无法复用公共逻辑(如日志、校验)
-
接口迭代成本高昂,破坏开闭原则
二、default 的作用
Java 8 的 default 赋予接口默认实现能力:
public interface PaymentService {
void processPayment(double amount);
// Default方法:提供默认实现
default void refund(double amount) {
log.info("执行默认退款: {}", amount);
// 基础退款逻辑...
}
}
关键语法规则
| 特性 | 说明 | 示例 |
|---|---|---|
default 修饰符 | 必须显式声明 | default void method() |
| 方法体 | 必须提供具体实现 | { ... } |
| 继承性 | 实现类自动获得默认实现 | class Alipay implements PaymentService |
| 重写可选 | 实现类可选择是否覆盖 | @Override refund() |
Java 8接口中default关键字的革命性作用
651

被折叠的 条评论
为什么被折叠?



