面向对象编程:多重继承与语言特性剖析
1. 多重继承概述
在面向对象编程中,有时派生类从多个基类继承特性会很有用。例如,在管理计算系统里,若要将同一年份的学生(大一、大二、大三、大四、未入学)放在某个列表中,可让 student
类同时从 person
和 gp_list_node
类派生。
在 C++ 中,代码如下:
class student : public person, public gp_list_node { ...
在 Eiffel 中,声明类似:
class student
inherit
person
gp_list_node
feature
...
这样, student
类的对象就会拥有 person
和 gp_list_node
类的所有字段和方法。
多重继承在 CLOS 和 Python 中也存在。而 Simula、Smalltalk、Objective - C、Modula - 3、Ada 95 和 Oberon 仅支持单继承。Java、C# 和 Ruby 提供了有限的“混合”形式的多重继承,其中只有一个父类可以有字段。
1.1 多重继承带来的问题
多重继承引入了大量语义和实际