jdk 8 接口默认方法通过 default 关键字在接口中提供具体实现,允许在不破坏现有实现类的前提下为接口添加新功能。使用方式是在接口定义方法时加上 default 修饰符并给出方法体,调用时直接通过实现类实例访问即可。

如何定义和调用接口默认方法
在接口中使用 default 关键字声明方法并提供默认实现,实现类无需重写该方法即可直接使用。调用时通过实现类的对象实例直接调用该默认方法,若实现类重写了该方法则优先执行重写后的逻辑。

interface DefaultInterface {
default void printMessage() {
System.out.println("Default implementation");
}
}
class MyClass implements DefaultInterface {
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.printMessage(); // 输出: Default implementation
}
}当多个接口的默认方法冲突时如何处理
当一个类实现多个包含相同签名默认方法的接口时,必须在该类中显式重写该方法以解决冲突。可以通过调用特定接口的默认方法来实现组合逻辑,或者完全自定义新的实现逻辑。
立即学习“Java免费学习笔记(深入)”;

interface InterfaceA {
default void show() {
System.out.println("From A");
}
}
interface InterfaceB {
default void show() {
System.out.println("From B");
}
}
class ConflictClass implements InterfaceA, InterfaceB {
@Override
public void show() {
InterfaceA.super.show(); // 调用 A 的默认方法
InterfaceB.super.show(); // 调用 B 的默认方法
}
public static void main(String[] args) {
ConflictClass obj = new ConflictClass();
obj.show();
}
}默认方法如何访问类中的私有成员变量
接口默认方法无法直接访问实现类中的私有成员变量,因为接口不包含状态且与实现类解耦。若需访问实现类的字段,应通过公共 getter 方法或构造函数传递数据,或者将相关逻辑移至实现类中。


















