Java 支持多继承吗?
查看完整题解
参考回答
直接回答
一个 Java 类只能直接继承一个类,但可以实现多个接口;一个接口也可以继承多个接口。因此,Java 不支持多重类继承,却支持通过多个接口建立多种子类型关系。接口可以包含 default 方法,所以还必须说明多个默认实现发生冲突时怎样解决。
讲清原理
类继承会涉及实例状态、构造过程和实现。如果两个父类都有同名状态或初始化要求,组合起来会带来额外歧义。Java 选择单一直接父类,但允许类同时承诺多种接口能力。
两个无继承关系的接口提供相同签名的 default 方法时,实现类通常需要显式覆盖,决定采用哪个实现或重新实现。接口之间有更具体的继承关系、或类层次已经提供实现时,还要按相应规则判断,不能一概说“默认方法都冲突”。
例子与易错点
interface A { default String label() { return "A"; } }
interface B { default String label() { return "B"; } }
class C implements A, B {
public String label() { return A.super.label(); }
}
System.out.println(new C().label()); // A
这个类明确解决冲突。接口多继承不等于同时继承了多个普通类的实例字段与构造器;想复用几种实现,也可以用组合委托。
相关题:第 9 题、第 32 题。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。