Java 8引入默认方法,用default关键字在接口中提供可选实现,解决接口升级兼容性问题;实现类可直接使用或重写;多接口同名默认方法需显式覆盖并用InterfaceName.super调用;不可用static、private、final修饰。

Java接口的默认方法(Default Method)是从Java 8开始引入的特性,允许在接口中提供具体实现的方法,用 default 关键字修饰。它解决了接口升级时“不破坏已有实现类”的问题,让新增方法不会强制所有实现类重写。
在接口中直接定义带方法体的方法,并加上 default 修饰符即可:
public interface Animal {
void makeSound(); // 抽象方法,必须由实现类重写
default void sleep() {
System.out.println("Zzz... sleeping");
}
}任何实现该接口的类(如 Dog、Cat)会自动继承 sleep() 的行为,无需额外代码。
dog.sleep() 输出 “Zzz... sleeping”public class Dog implements Animal {
public void makeSound() {
System.out.println("Woof!");
}
@Override
public void sleep() {
System.out.println("Dog sleeps in a doghouse");
}
}重写后调用的就是新逻辑;没重写就走接口里的默认实现。
立即学习“Java免费学习笔记(深入)”;
如果您是新用户,请直接将本程序的所有文件上传在任一文件夹下,Rewrite 目录下放置了伪静态规则和筛选器,可将规则添加进IIS,即可正常使用,不用进行任何设置;(可修改图片等)默认的管理员用户名、密码和验证码都是:yeesen系统默认关闭,请上传后登陆后台点击“核心管理”里操作如下:进入“配置管理”中的&ld
0
当一个类同时实现两个接口,而它们都有同签名的默认方法时,编译器会报错——必须在实现类中显式覆盖该方法,否则无法编译通过。
interface A { default void show() { System.out.println("A"); } }
interface B { default void show() { System.out.println("B"); } }
class C implements A, B {
@Override
public void show() {
A.super.show(); // 显式调用A的版本
// 或 B.super.show();
}
}此时必须用 InterfaceName.super.method() 明确指定调用哪个父接口的实现。
这些修饰符与默认方法的设计目标冲突:
static 方法属于接口本身,不属于实例,应单独声明为静态方法(Java 8+也支持接口中静态方法)private 默认方法无意义,因为默认方法本就是供实现类使用的,私有则无法被继承final 会阻止子类重写,默认方法的核心价值之一正是可被选择性覆盖基本上就这些。合理使用默认方法,能让接口更灵活,也更易维护。
以上就是java接口如何使用默认方法的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号