解释 default 接口方法解决了什么向后兼容问题
JDK 1.8 前 interface 只能定义抽象方法,公共逻辑必须放抽象类。1.8 引入 default 关键字允许接口直接提供方法实现,解决了向 Collection 等既有接口新增 forEach/stream 而不破坏所有实现类的问题。核心语法:在接口方法前加 default 并提供完整实现体,实现类可直接调用或覆盖。但这模糊了接口与抽象类的边界,接口仍不能持有状态字段,而抽象类单继承下可以。
诊断题
答案骨架
边界追问
边界答案
记忆锚点
衍生拓展
落地场景
定义接口 IFormula,calculate 为抽象方法,sqrt 为 default 方法:
javapublic interface IFormula {
double calculate(int a);
default double sqrt(int a) {
return Math.sqrt(a);
}
}
// 使用匿名内部类
IFormula formula = new IFormula() {
@Override
public double calculate(int a) { return a * a; }
};
System.out.println(formula.calculate(2)); // 4
System.out.println(formula.sqrt(2)); // 1.414...