第18章 父与子——类的继承
前面的章节介绍了如何编写一个完整的类。然而,面向对象的优势还没有完全体现出来。特别是在编写相似的类时,可能会造成很多的浪费。本章将以一个文字游戏为例,向大家介绍类的继承问题。
本章的主要知识点有:
- 类的继承性
- 继承的实现
- 子类对象的构造与析构
- 类的多态性
- 多态的实现与特例
- 虚函数与虚析构函数的概念
- 纯虚函数与抽象类的概念
- 多重继承的概念
18.1 剑士·弓箭手·法师的困惑
在一个角色扮演类游戏(RPG)中,可能有各种不同职业的玩家,比如剑士、弓箭手和法师。虽然他们的职业不同,却有着一些相似之处:他们都具有生命值(Health Point——HP)、魔法值(Magic Point——MP)、攻击力(Attack Point——AP)、防御力(Defense Point——DP)、经验值(Experience——EXP)和等级(Level——LV)。虽然它们有着相似之处,但又不完全相同:剑士和弓箭手都具有普通攻击的技能,只不过剑士用的是剑,而弓箭手用的是弓箭。
这样看来就有麻烦