Java为什么只支持单继承而不支持多继承?

Java只支持类的单继承,不支持多继承,主要有以下几个考虑:

  1. 简化语言特性
    多继承会使得语言功能更加复杂,单继承简化了继承逻辑。
  2. 避免钻石继承问题
    多继承可能会引发父类之间彼此相关的问题。
interface A {
  void test();
}

interface B extends A {

}

interface C extends A {

}

// 若支持多继承
class D extends B, C {

}
  1. 降低代码维护难度
    多继承会使代码阅读和理解更困难。单继承关系更清晰简单。
  2. 保持语言的纯洁性
    多继承会使语言局限性变差,Java注重语言的简洁性。
  3. 可以通过接口实现类似多继承
    Java使用接口可以达到类似多继承的效果。
interface A {

}

interface B {

}

class C implements A, B {

} 

Java之父James Gosling认为,多继承的复杂性高于获得的收益,所以选择了只支持单继承的方式。