接口可通过extends继承多个接口,实现多重继承。如interface C extends A, B,类实现C需重写所有方法。Java 8后若父接口有同名default方法,子接口必须重写以避免冲突,确保行为明确。
Java中类不支持多继承,但接口可以“多继承”,准确说是接口之间可以通过extends关键字继承多个其他接口。这实现了接口层面的多重继承功能。
在Java中,一个接口可以通过extends关键字同时继承多个接口,各接口之间用逗号分隔。
例如:
interface A {
void methodA();
}
interface B {
void methodB();
}
interface C extends A, B {
void methodC();
}
此时,接口C继承了A和B中的所有抽象方法。任何实现C的类都必须实现methodA、methodB和methodC。
如果有一个类实现接口C,它就必须提供A、B、C中所有方法的具体实现。
示例:
class MyClass implements C {
public void methodA() {
System.out.println("实现 methodA");
}
public void methodB() {
System.out.println("实现 methodB");
}
public void methodC() {
System.out.println("实现 methodC");
}
}
这样就完成了对接口多继承的完整支持。
从Java 8开始,接口可以包含default方法。当多个父接口有同名默认方法时,子接口或实现类必须明确覆盖该方法,以避免冲突。
例如:
interface X {
default void greet() {
System.out.println("Hello from X");
}
}
interf
ace Y {
default void greet() {
System.out.println("Hello from Y");
}
}
interface Z extends X, Y {
@Override
default void greet() {
System.out.println("Resolved in Z");
}
}
必须在Z中重写greet()方法,否则编译失败。
基本上就这些。接口多继承是Java中实现行为复用的重要方式,合理使用可以让代码结构更清晰。