C++继承和多态机制详解

需积分: 3 1 下载量 32 浏览量 更新于2024-09-20 收藏 54KB DOC 举报
继承和多态 继承是面向对象编程语言中的一种机制,它允许一个类继承另一个类的属性和方法,从而提高程序的可复用性。继承的主要特点是:子类可以继承父类的所有成员变量和成员函数,子类可以对父类的成员变量和成员函数进行重写和扩展。 在继承中,需要注意两个重要的规则: 1. 如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能。这是因为继承关系应该建立在逻辑上的,而不是为了获取更多的功能。 2. 如果类B有必要使用A的功能,则需要分两种情况考虑:(1)若在逻辑上B是A的“一种”(akindof),则允许B继承A的功能。例如,男人(Man)是人(Human)的一种,男孩(Boy)是男人的一种。那么类Man可以从类Human派生,类Boy可以从类Man派生。(2)若在逻辑上A是B的“一部分”(apart of),则不允许B继承A的功能,而是要用A和其它东西组合出B。 多态是面向对象编程语言中的一种机制,它允许将派生类的对象当作基类的对象使用。多态的主要特点是:可以将一个基类的指针指向一个派生类的对象,从而实现了多种类型的对象可以被当作同一种类型的对象来使用。 C++语言中使用关键字virtual来声明一个函数为虚函数,派生类的虚函数将覆盖(override)基类对应的虚函数的功能。多态可以大大提高程序的可复用性和可扩充性。 结合“抽象基类”和“多态”有如下突出优点: (1)应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。这一招叫“以不变应万变”,可以大大提高程序的可复用性(这是接口设计的复用,而不是代码实现的复用)。 (2)派生类的功能可以被基类指针引用,这叫向后兼容,可以提高程序的可扩充性和可维护性。以前写的程序可以被将来写的程序调用不足为奇,但是将来写的程序可以被以前写的程序调用那可了不起。 在Java语言中,多态可以通过接口和实现类来实现。例如: public interface Parent(){ public void simpleCall(); } public class Child_A implements Parent{ public void simpleCall(){ //具体的实现细节; } } public class Child_B implements Parent{ public void simpleCall(){ //具体的实现细节; } } //当然还可以有其他的实现类来实现多态。 继承和多态是面向对象编程语言中两个非常重要的机制,它们可以提高程序的可复用性和可扩充性,但需要正确地使用它们,以免出现问题。