Java只支持类的单继承,不支持多继承,主要有以下几个考虑:
- 简化语言特性
多继承会使得语言功能更加复杂,单继承简化了继承逻辑。 - 避免钻石继承问题
多继承可能会引发父类之间彼此相关的问题。
interface A {
void test();
}
interface B extends A {
}
interface C extends A {
}
// 若支持多继承
class D extends B, C {
}
- 降低代码维护难度
多继承会使代码阅读和理解更困难。单继承关系更清晰简单。 - 保持语言的纯洁性
多继承会使语言局限性变差,Java注重语言的简洁性。 - 可以通过接口实现类似多继承
Java使用接口可以达到类似多继承的效果。
interface A {
}
interface B {
}
class C implements A, B {
}
Java之父James Gosling认为,多继承的复杂性高于获得的收益,所以选择了只支持单继承的方式。