《面向对象的思考过程(原书第4版)》一3.5 多重继承

本节书摘来自华章出版社《面向对象的思考过程(原书第4版)》一书中的第3章,第3.5节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.5 多重继承

第7章会讲述有关继承的更多细节。然而,这里很适合讨论多重继承。多重继承是类设计中最强大也最具挑战的一个方面。
顾名思义,多重继承允许一个类继承自多个类。实际看起来这是个好主意。对象都应该模拟现实世界,不是吗?现实世界中存在很多多重继承的例子。父母是多重继承的一个好例子。每个孩子有一对父母,这是非常自然的事。所以设计类时使用多种继承是有道理的。在一些面向对象的语言中(比如C++中)你可以这样做。
然而,这种情况会陷入与操作符重载相似的情况。多重继承是非常强大的技术,事实上没有它一些问题会变得难以解决。多重继承甚至可以完美解决一些问题。然而,多重继承无论对程序员还是编译器作者而言,都会显著增加系统的复杂度。
与操作符重载一样,Java、.NET和Objective-C的设计者认为多重继承带来的系统的复杂度超过了带来的好处,因此从语言层面消除了多重继承。Java、.NET和Objective-C语言提供的接口构造能在某些方面能弥补这一点。但Java、.NET和Objective-C不允许传统的多重继承。
行为继承和实现继承
接口是行为继承的一种机制,抽象类则用于实现继承。编程语言中的接口类型提供不同行为的接口,但不提供实现,而抽象类既提供接口,也能提供实现。第8章详细阐述了该主题。

上一篇:Java Applet编程总结


下一篇:GitHub开源史上最大规模中文知识图谱