第11章 多态
多态性是面向对象程序设计语言的基本特征。仅将数据和函数捆绑在一起,进行类的封装,使用一些简单的继承,还不能算是真正应用了面向对象的程序设计思想。多态性是面向对象的精髓。多态性可以简单地概括为“一个接口,多种方法”,前面讲过的函数重载就是一种简单的多态,一个函数名(调用接口)对应着几个不同的函数原型(方法)。
本章主要涉及以下知识点。
❑多态与虚函数:介绍虚函数的概念、声明及其定义。
❑虚函数的访问:介绍虚函数的各种使用方法。
❑纯虚函数与抽象类:介绍纯虚函数和抽象类的概念、声明和使用。
❑虚函数引用的二义性:介绍虚函数的优点和缺点。
❑重载、覆盖与隐藏:介绍重载、覆盖和隐藏的概念及示例。
11.1 多态与虚函数
通俗地说,多态性是指同一个操作作用于不同的对象就会产生不同的响应;多态性分为静态多态性和动态多态性,其中函数重载和运算符重载属于静态多态性,虚函数属于动态多态性。函数重载和运算符重载在前面已经讲过,虚函数是本章的重点,C++是依靠虚函数来实现动态和多态的。在进一步讲述多态前,先要了解几个概念。
11.1.1 静态联编
程序调用函数时,具体应使用哪个代码块是由编译器决定的。举函数重载为例,C++编译器根据传递给函数的参数和函数名来决定具体要使用哪一个函数,称为联编(Binding)。编译器可以在编译过程中完成这种联编,在编译过程中进行的联编叫静态联编(Static Binding)或早期联编(Early Binding)。