1 / 52
文档名称:

第八章 继承与多态.doc

格式:doc   页数:52页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第八章 继承与多态.doc

上传人:中国课件站 2011/9/6 文件大小:0 KB

下载得到文件列表

第八章 继承与多态.doc

文档介绍

文档介绍:第八章继承与多态
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类,即从原有类派生出来的新类。派生类不是简单地继承基础类的特性,它可以调整部分成员的特性,也可以增加一些新成员。在VC++的MFC编程中,有最典型的继承与派生:由一个基类一层一层派生出近二百个大多数MFC的类。继承呈现了面向对象程序设计的层次结构。
多态性(polymorphism)也是面向对象程序设计的标志性特征。多态性是考虑在不同层次的类中,以及在同一类中,同名的成员函数之间的关系问题。这个问题放在本章的后半部分讲解,但实际上早已开始应用:算术运算中不同类型数(整型、浮点等)的混合运算,就是一个典型的多态性应用。而函数的重载,运算符的重载,都属于多态性中的编译时的多态性。本章要讲解的是运行时的多态性,这是以虚基类为基础的多态性。
面向对象的程序设计是对人类思维和现实世界的模拟。人们认识世界总是从已认识的部分推广开来,去认识未知的部分。继承体现了由简单到复杂的认识过程,多态体现了类推和比喻的思想方法。
继承与派生的概念
层次概念是计算机的重要概念。对类(class)分层,提供类型/子类型的关系,这是通过继承(inheritance)的机制获得的。C++通过类派生(class derivation)的机制来支持继承。被继承的类型称为基类(base class)或超类(superclass),而新产生的类为派生类(derived class)或子类(subclass)。基类和派生类的集合称作类继承层次结构(hierarchy)。更进一步,如果基类和派生类共享相同的公有接口,则派生类被称作类的子类型(subtype)。
继承机制体现了现实世界的层次结构。例如学校的在册人员可分为两大类:学生和教职工。学生可分为本科生和研究生,教职工可分为教师、行政人员和工人。对在册人员管理的程序都要存储这些人员的身份证号、姓名、学校编号、性别、年龄、通信方式、家庭住址、家庭成员、社会关系和个人简历等等基本信息,还要有取得(查找)这些信息的操作方法。作为学生,还要存储应学课程(必修,选修)及学分、已学课程及成绩和学分、奖励和处罚的情况,还要有学籍管理、奖优惩劣的功能。对本科生还有毕业设计,对研究生有研究课题。作为教职工还要存储工资级别、当月薪水和工作业绩,当然还包括各种操作(函数):如计薪方法,业绩统计规则,升级的规定。但这操作方法对教师(不坐班),对行政人员(坐班),对工人都有不同。这样我们可以看到不同人员有共性也有自己的个性,或者说要处理的数据和操作的方法有相同的地方,也有不同的地方。解决方法有两种:一种是对不同类型的人员采用完全独立的管理方法;另一种是首先作统一的基本描述和管理,再针对大类(学生与教职工)的差异作进一步的管理,最后再对具体类别(本科生、研究生、教师、行政人员和工人)作个性管理。对应于面向对象的程序设计,前者是为具体类别人员各自独立设计一个类,而后者是为所有人员设计一个基类,而为两大类派生出两个派生类(学生类和教职工类),再在这两个派生类的基础上再派生出新类(本科生类,研究生类,教师类,行政人员类和工人类)。应该说后面一种方法更好,它反映了事物之间的联系,事物的共性与个性之间的关系。而前者把事物完全隔离开了。从工作量上看,也是后者更优,工作量少,重复的部分可以从基类继承,不需要单独编程。
类的派生与继承
由基类派生出派生类的定义的一般形式为
class 派生类名:访问限定符基类名1《,访问限定符基类名2,……,访问限定符基类名n》
{
《《private: 》
成员表1;》//派生类增加或替代的私有成员
《public:
成员表2;》//派生类增加或替代的公有成员
《protected:
成员表3;》//派生类增加或替代的保护成员
}
其中基类1,基类2,……是已声明的类。如果一个派生类可以同时有多个基类,称为多重继承(multiple-inheritance),这时的派生类同时得到了多个已有类的特征。多重继承的处理非常复杂,而且易出错,我们将放在后面讨论。一个派生类只有一个直接基类的情况称为单一继承(single-inheritance)。在这里先讨论单一继承。。图中箭头指向基类,这是一种传统画法。
基类1
基类2
……
基类n
派生类1
派生类2
基类
派生类1
派生类2
(a)多重继承(b)单继承
多重继承与单继承

在派生类定义的类体中给出的成员称为派生类成员,它们是新增加的数据和函数成员。这些新增加的成员是派生类对基类的发展,它们

最近更新

农业采购谈判与跟单技术服务合同 3页

农产品收购与生态运输服务合同 3页

农产品销售担保合同范本模板 2页

冷链物流冷库项目设备销售安装及冷链技术支持.. 3页

出口退税贷款延期合同模板 2页

出租车企业司机劳动合同规范范本 3页

2025年度印刷品外协加工质量标准与版权保护协.. 37页

出租车智能调度系统使用合同 3页

2025年度光伏发电项目完工付款协议3篇 40页

出纳职位担保服务协议范本 2页

创新型办公室场地租赁合同范本 3页

别墅区车位使用权转让合同模板 2页

办公室场地租赁与一体化装修设计与施工合同 3页

办公家具行业质量控制合同[规范] 3页

四川省名校联盟高2025届高三上学期12月联考-英.. 10页

动产担保承诺书创新担保合同典范 3页

化妆品销售合作框架协议 3页

北京商铺出租合同押金收取与退还范本 3页

北京汽车租赁合同终止条件及赔偿协议 2页

医疗健康产业贷款抵押合同协议 6页

医疗设备财产抵押担保合同 4页

单位产品发布会广告制作合同 3页

博物馆布展工程艺术品修复合同协议书 3页

厂房出租服务费标准结算居间合同范本 3页

厂房租赁合同及配套设施建设协议 3页

厂房车间装修工程竣工验收与保修责任合同 3页

厨师长任用与团队建设合作合同 2页

叉车销售与智能物流解决方案咨询合同范本 3页

古籍文献搬迁与保护合同 3页

商业区车位租赁管理合同范本 3页