答案:不支持。(准确的说是:在Java中,类只支持单继承,而接口可以实现多继承。)
James Gosling在1995年2月发表了一篇名为”Java概览”的Java白皮书,文章解释了Java不支持多重继承的原因。
Java去除了一些C++中很少用、而且被经常误解而错用的功能,如操作符的重载(operator overloading)(尽管Java仍旧保留方法的重载),多重继承(multiple inheritance),以及广泛的自动强迫同型(extensive automatic coercions)。
没有谁比James Gosling更有资格来谈论这个这个话题了。
一、为什么Java只能单继承?
因为在C++中一个类是可以继承多个类,但这样的机制会使类的结构变得很复杂,所以Java将这一机制通过接口得以改善。
Java中不允许类多继承,只能单继承。单继承使得Java简单,易于管理,不会出现逻辑错误以及多继承自身的缺陷。为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口,从而在另一个更合理的角度来实现纯粹的多继承性。因此,通常可以采用实现多个接口的方式间接达到多重继承的目的。
二、Java中类不能实现多继承的原因
如果类之间实现了多继承,会造成程序的紊乱。如果一个子类同时继承了两个父类,而这两个父类拥有相同的属性或方法,子类调用的时候系统不知道该调用哪个父类的属性或方法,会使程序报错。