- 11
- 0
- 约4.76千字
- 约 15页
- 2016-08-11 发布于重庆
- 举报
VisualC轻松入门_第7章代码重用的机制-类继承
第7章 代码重用的机制-类继承 面向对象中的类继承就是在模仿生物界的繁衍和进化。类继承在大型的软件工程项目中具有重要的作用,原因在于大型的软件项目也需要不断地进化和迭代开发。本章将讲解面向对象的核心知识-类继承,让读者能够树立软件分层的抽象思维,并掌握类继承的定义和使用,本章的主要修行要点如下。 多态公有继承:读者将学会继承理论中最常用的继承方式原理和使用。 protected访问控制:读者将学会在继承链中发挥作用的protected域。 抽象基类:读者将学会并理解作为接口定义的抽象基类。 私有继承和保护继承:读者将学会不常用的两种继承方式。 多继承:读者将学会使用多个基类的继承方式,并了解到该继承方式可能会产生的二义性。 类模板:读者将学会定义类模板。 7.1 自然界中的生物分类 感觉又回到了初中生物课堂,为了使C++知识不那么抽象,本章也是从自然界的生物开始讲起。众所周知,人类是属于哺乳类动物的一种,至于为什么这样归类,这个问题应该去问生物学家,我们只需要知道这样一个从属关系即可,另外,又已知哺乳动物是属于动物的一种,因此,“动物”、“哺乳动物”和“人类”可以得到如图7.1所示的从属关系。 7.2 多态公有继承 【本节示例参考:\源代码\C07\Inheritance】 多态公有继承是指在继承关系中出现的“使用同名函数而实现不同功能”的函数定义和调用的情况,该现象在自然界中非常普遍,问读者一个很简单一个问题:人和马都会走路,因此这两类可以定义一个Walk()函数,但两者走路的方式和速度一样吗?显然是不一样的,因此,人的Walk()函数和马的Walk()函数名虽然一样,但函数体内的功能代码可以是完全不同的。如果将这种情况扩展到具有公有继承关系的情况下会怎么样呢?为了研究这个问题,本节我们继续仔细研究以下3种生物分类: 动物:具有生命+会动。 哺乳动物:具有生命+会动+哺乳+胎生。 人类:具有生命+会动+哺乳+胎生+具有较高智能+会使用工具。 7.2.1 is-a关系:A是B的一种 具有从属关系的类的关系可以称为“is-a关系”,即某个类是某个类的一种,如人类是哺乳动物的一种,哺乳动物是动物的一种。在设计具有继承关系的类时,使用类图是必不可少的,而业界最常用的类图的绘制是使用UML图,即统一建模语言(如果要学习UML,需要阅读专门的UML书籍)。由于人类是哺乳动物的一种,而哺乳动物又是动物的一种。因此,使用UML图来表示这3种类之间的关系,如图7.2所示。 7.2.2 不同类型的元素组成的数组 读者现在应该对数组非常熟悉了,它的定义无非就是这样: int a[100]; // 定义一个具有100个元素的int型的a数组 DataType array[ArraySize]; // 定义一个具有ArraySize个元素的DataType型的array数组 不管数组怎么定义,“DataType”总是一样的,也就是说,数组元素要么都是int,要么都是double,或者要么都是某种类型,能否实现这样的需求: a[0]是A类型,如int。 a[1]是B类型,如double。 a[2]是C类型,如char。 ……。 7.2.3 虚函数与动态联编 前文讲解了“动物类”、“哺乳动物类”和“人类”三者的区别与相互之间的关系,它们之间的概念随着继承的深入将变得更为细致,如哺乳动物会比动物类多出会哺乳、胎生等行为,而人类则比一般的哺乳动物多了会学习、会工作等行为,而对于它们之间共同的行为是否也是一样呢?如三者都具有生命并且会动(具有hasLife()函数和canMove()函数),但这些行为肯定是不一样的,从基本常识可知,这些具体的行为是随着物种的不同而不同,C++模拟真实世界的这一行为采用的是虚函数,定义虚函数,可以让不同的类对象中具有相同的函数名称,但实现不同的功能。 虚拟函数又称为虚函数,是C++面向对象重要的理论知识部分。与虚函数相对的暂且称之为“普通函数”。虚函数的定义比“普通函数”只是在函数前面加了一个“virtual”关键字,定义格式如下: virtual 返回值 函数名( 参数列表 ) ; 7.3 protected用在何处 众所周知,类和C语言风格的结构体的最大区别在于类可以进行访问的控制,当然,C++语言风格的结构体也具有访问控制的功能,实际上也是一种类,类具有3个访问控制域。 public:公有,可以供外界访问。 private:私有,不能供外界访问。 protected:保护,这个是什么意思?外界能不能访问它?谁能访问它? 本书前文里一直就只出现public和private域,而对protected却没有提及,并不是笔者忽略了,而是在前文没有必要使用protected域。反过来说,protected域就是
您可能关注的文档
- M(理科)[新课标人教版]_排列组合与二项式定理(选修2-3).doc
- M10第6章定时器.ppt
- M8-5电路分析第八章.ppt
- matlab在数字电路中应用.ppt
- 工程塑料的电性能.doc
- 工程垫资施工的利与弊.doc
- 工程安全质量进度管理制度(诸暨).doc
- matlab第7章.ppt
- 工程师必须懂的计算公式大全体积面积.doc
- 工程师考试《合同管理》模拟练习.doc
- 2026“芳华悦己 向美而生”38妇女女神节主题活动方案【妇女节】.pptx
- 游戏传奇IP生态发展研究报告202601.docx
- 抑郁障碍治疗药物临床试验技术指导原则(试行).docx
- 量云能源-电力市场量化交易技术和应用展望.docx
- 2026年快手体育全年营销通案.docx
- 中诚信国际信用评级有限责任公司_2025年城投行业“十大”热词盘点.pdf
- 中国光伏行业协会PPT:光伏行业“十四五”发展回顾与“十五五”形势展望.docx
- 2026 AI就绪度:构建标准化就绪度框架分析报告V2.0(英文).pdf
- 关于开展树立和践行正确政绩观工作情况汇报.docx
- 树立践行正确政绩观PPT课件.pptx
原创力文档

文档评论(0)