词条 | 多继承 |
释义 | C++中的多继承多继承即一个子类可以有多个父类,它继承了多个父类的特性。 多继承可以看作是单继承的扩展。所谓多继承是指派生类具有多个基类,派生类与每个基类之间的关系仍可看作是一个单继承。 多继承下派生类的定义格式如下: class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,… { <派生类类体> }; 其中,<继承方式1>,<继承方式2>,…是三种继承方式:public、private、protected之一。例如: class A { … }; class B { … }; class C : public A, public B { … }; 其中,派生类C具有两个基类(类A和类B),因此,类C是多继承的。按照继承的规定,派生类C的成员包含了基类B中成员以及该类本身的成员。 多继承的构造函数 在多继承的情况下,派生类的构造函数格式如下: <派生类名>(<总参数表>):<基类名1>(<参数表1>),<基类名2>(<参数表2>),… <子对象名>(<参数表n+1>),… { <派生类构造函数体> } 其中,<总参数表>中各个参数包含了其后的各个分参数表。 多继承下派生类的构造函数与单继承下派生类构造函数相似,它必须同时负责该派生类所有基类构造函数的调用。同时,派生类的参数个数必须包含完成所有基类初始化所需的参数个数。 派生类构造函数执行顺序是先执行所继承基类的构造函数,再执行派生类本身构造函数,处于同一层次的各基类构造函数的执行顺序取决于定义派生类时所指定的各基类顺序,与派生类构造函数中所定义的成员初始化列表的各项顺序无关。也就是说,执行基类构造函数的顺序取决于定义派生类时基类的顺序。可见,派生类构造函数的成员初始化列表中各项顺序可以任意地排列。 Java中的“多继承”Java不支持类之间的多继承,即一个子类只能有一个父类。单继承性使得Java简单,易于管理程序,不会出现逻辑错误以及多继承自身的缺陷。为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口,从而在另一个更合理的角度来实现纯粹的多重继承性,实现接口使用关键字implements。 继承使用关键字extends,包括子类与父类之间的继承,和子接口与父接口之间的继承,类与接口之间只可以是实现(implements)的关系。 子类与父类之间只可以单继承,类可以实现多个接口,接口之间可以实现多继承,即一个子接口可以使用extends关键字继承多个父接口,拥有多个父类,只需用逗号将接口名一一分开即可,但是如果真的必须需要使用这样复杂的机制,务必注意方法重名导致的问题。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。