一个类不能直接继承多个类,Java是单继承语言。比如说这样:class A extends B,C 不能这样写,因为java不支持多继承。但是可以像下面这样实现继承多个类:class A extends B,class C extends A,这样C就同时继承了B和A两个类了。

继承是面向对象编程的一种特性,是保留原有类功能的前提下拓展或改写部分功能,实现代码复用的方式,
单继承就是一个类只可以继承自一个父类,多继承是指一个类可以同时继承多个父类
java中使用的是单继承,也就是一个类有且只能有一个父类,java中可以使用接口实现来实现类似多继承的效果
多重继承(Multiple Inheritance, MI)指的是一个类别可以同时从多于一个父类继承行为与特征的功能。与单一继承相对,单一继承指一个类别只可以继承自一个父类。
这个问题,java之父曾经回答过,设计java语言的初衷就是要设计一门更加简单的语言,所以java的设计屏蔽了一些负载的东西,其中就包括指针和多继承。为什么说多继承复杂呢?这就要说一个多继承的菱形继承问题(又叫钻石继承)。
菱形继承(钻石继承)
那么菱形继承有什么问题?
资源浪费:移动电话继承了多份父类(硬件)的属性(getCreateTime()的引用);
二义性:移动电话的getId无法确定是返回imei还是mac地址。
那么c++中如何解决这个问题?有两种解决办法:
1. 通过域限定来访问,能够解决二义性问题,例如
移动电话 d = 移动电话()
2. 通过虚继承,能够解决资源浪费和部分二义性问题,例如
移动电话 d = new 移动电话()
d.id//这时候访问的是硬件::id
较真的朋友可能会问,如果重名的属性不在硬件类里面定义会怎么样?是的,如果上述例子的硬件类并没有定义id,那么二义性依然存在并导致编译无法通过,所以虚继承为什么说只是部分解决二义性问题。
是不是很复杂?所以java直接舍弃多继承,避免这种二义性,改用多实现接口的方式代替,因为即使接口的方法重复了,多实现里面要求实现类自己去实现方法,也就是相当于强制要求实现类去覆盖同名属性,解决二义性问题。
Java中支持单继承,多实现。
如果支持多继承,那么指一个子类能同时继承于多个父类,从而同时拥有多个父类的特征,若子类继承的父类中拥有相同的成员变量,子类在引用该变量时将无法判别使用哪个父类的成员变量,因此多继承是存在争议的,是不能多继承的。
通俗点来将,一个人不可能是拥有多个父亲或母亲的。
不能,因为子类继承父类的时候,先运行父类构造函数;具体的说就是运行父类时就会先“调用”父类的构造函数,注意“调用”和继承不是一个含义,实质上是“自动运行”。继承(extends)的含义其实是“扩展”,子类完全没必要扩展父类的构造函数,因为反正每次调子类的时候都会“自动运行”它父类的构造函数,如果真的需要子类构造函数特殊的形式,子类直接修改或重载自己的构造函数就好了。估计是你对“构造函数”的意义本身不理解,“调用”一个类有“继承”和“组合(说白了new 一个类)”两种方式,当你“调用”一个类的时候就会“自动运行”它的“构造函数”。