Java接口的default方法可选重写,仅当类实现多个含同签名default方法的接口时才必须重写;重写需用@Override、public修饰符、签名一致,并支持InterfaceName.super.methodName()调用;不重写时直接继承默认逻辑;static方法不可重写且属接口自身。

可以,Java 接口中的 default 方法完全支持在实现类中被重写,而且重写是可选的——不强制,但一旦选择重写,就必须遵循明确的语法规则。
什么时候必须重写 default 方法?
只有在发生多接口冲突时才必须重写:
- 一个类同时实现了两个(或以上)接口
- 这些接口中都定义了签名完全相同的 default 方法(方法名、参数列表、返回类型一致)
- 此时编译器无法自动选择继承哪一个,会报错,要求你在实现类中显式覆盖该方法
重写 default 方法的正确写法
重写时需满足以下关键要求,否则编译失败:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 必须使用
@Override注解(推荐,且增强可读性) - 访问修饰符必须是
public(接口中 default 方法默认就是 public,实现类不能降级为 protected 或包私有) - 方法签名(名称、参数类型与顺序、返回类型)必须与接口中完全一致
- 可在重写方法体内通过
InterfaceName.super.methodName()显式调用某个父接口的默认实现
不重写时的行为
如果实现类只实现一个接口,或多个接口中没有同名 default 方法,那么:
立即学习“Java免费学习笔记(深入)”;
- 实现类可直接调用该 default 方法,无需任何代码
- 调用的是接口中定义的默认逻辑,不是空实现,也不是抛异常
- 这正是 default 方法的核心价值:向后兼容、零成本扩展接口功能
和 static 方法的区别要分清
别把 default 方法和接口中的 static 方法混淆:
- default 方法属于实例行为,可通过对象调用,可被重写
- static 方法属于接口自身,只能用
InterfaceName.method()调用,实现类无法继承,更不能重写 - 即使实现类定义了同名 static 方法,也和接口的 static 方法无关,二者独立存在

















