潜在问题
- 命名冲突:不同父接口中存在同名方法,实现类不清楚具体要实现哪个接口的语义,调用时也难以确定行为。
- 语义冲突:同名方法在不同父接口可能有不同语义,实现类实现该方法时难以满足所有接口语义需求。
实现类解决冲突方式
- 明确实现:在实现类中明确按照需求实现同名方法,满足业务需求。
- 调用特定接口方法:使用接口名.方法名的形式调用特定接口的默认方法(Java 8 及以后接口可包含默认方法)。
代码示例
interface InterfaceA {
default void method() {
System.out.println("InterfaceA's method");
}
}
interface InterfaceB {
default void method() {
System.out.println("InterfaceB's method");
}
}
class ImplementingClass implements InterfaceA, InterfaceB {
@Override
public void method() {
// 明确实现,例如选择InterfaceA的行为
InterfaceA.super.method();
// 也可以自定义实现逻辑
// System.out.println("Custom implementation in ImplementingClass");
}
}
public class Main {
public static void main(String[] args) {
ImplementingClass obj = new ImplementingClass();
obj.method();
}
}