第七章继承与派生(1)

第七章继承与派生(1)

ID:44964139

大小:479.50 KB

页数:46页

时间:2019-11-06

第七章继承与派生(1)_第1页
第七章继承与派生(1)_第2页
第七章继承与派生(1)_第3页
第七章继承与派生(1)_第4页
第七章继承与派生(1)_第5页
资源描述:

《第七章继承与派生(1)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C++语言程序设计第一单元继承和派生第七章继承与派生1第七章继承与派生教学目的:通过本章的学习,学生应掌握继承的概念,定义派生类;熟悉不同继承方式下对基类成员的访问控制;学习使用虚基类解决二义性问题。教学重点:派生类的声明;继承中的访问控制。教学难点:不同继承方式下对基类成员的访问控制教学手段:电子教案2本章主要内容类的继承与派生类成员的访问控制单继承与多继承派生类的构造、析构函数类成员的标识与访问3§7.1继承和派生§7.1.1继承与派生问题举例工具车轿车面包车小汽车卡车旅行车汽车火车飞机轮船交通工具基

2、类子类继承使描述事物的能力大大增强和简单化。4继承与派生问题举例狮虎豹猫科动物家犬狼豺犬科动物哺乳动物动物类的继承与派生5继承与派生问题举例TriangleRectangleCircleShapeShapeDraw()Move()GetColor()SetColor()TrianglePointv1,v2,v3Draw()Move()RectanglePointv1,v2Draw()Move()CirclePointoriginfloatradiusDraw()Move()ABB类 继 承A类ABA包 含B6继承与

3、派生问题举例兼职技术人员销售经理管理人员销售人员雇员类的继承与派生7employeenameserialNogradesalaryPay()Promote()ShowStatus()technicianhourlyRateworkHoursPay()ShowStatus()managerPay()ShowStatus()salespersonsaleAmountPay()ShowStatus()salesmanagerPay()ShowStatus()8类的继承与派生新类从已有类得到已有的特性的过程称为继承。在

4、已有类的基础上新增自己的特性而产生新类的过程称为派生。被继承的已有类称为基类(或父类)。派生出的新类称为派生类(或子类)。baseclassderivedclass9继承与派生的目的类的继承和派生机制允许在已有类的基础上,进行更具体、更详细的修改和扩充。类的派生是一种演化、发展的过程。继承的目的:实现代码重用。派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行扩充。10§7.1.2派生类的声明class派生类名:继承方式基类名1,继承方式基类名1,…继承方式基类名n{派

5、生类成员声明;}ClassDr1:publicBase1,privateBase2{public:Dr1();~Dr1();}11派生类的声明一个派生类同时有多个直接基类,称为多继承。一个派生类只有一个直接基类,称为单继承。ABCDABC121.一个类从父类继承来的特征也可以被其他新的类所继承。类似于:祖父父亲儿子孙子……2.一个父类的特征,可以同时被多个子类继承。类似于:祖父多个儿子3.直接基类在类族中,直接参与派生出某类的基类称为直接基类。4.间接基类基类的基类甚至更高层的基类也称为间接基类13

6、继承方式继承方式规定了如何访问从基类继承的成员。继承方式关键字public:公有继承protected:保护继承private:私有继承派生类成员派生类成员是指除了从基类继承来的所有成员之外,新增加的数据和函数成员。派生过程是很重要的,若没有派生过程,而只有继承过程,也是没有意义。14§7.1.3派生类生成过程派生新类的生成过程:①吸收基类成员②改造基类成员③添加新的成员最主要目的:面向对象的继承和派生机制,其最主要的目的是实现代码的重用和扩充。吸收基类成员就是代码重用的过程,而对基类成员进行改造和添

7、加新的成员就是原有代码的扩充过程。15classemployee{protected:char*name;intindividualNo;intgrade;floataccumPay;staticintemployeeNo;public:employee();~employee();voidpay();voidpromote(int);voiddisplaystatus();};16classtechnician:publicemployee{//兼职技术人员类private:floathourlyRate;//每

8、小时酬金intworkHours;//当月工作时数public:technician();//构造函数voidpay();//计算月薪函数voiddisplaystatus();};//显示人员信息employeenameindividualNogradeaccumPayemployeeNopay()promote()displayStatus()hourl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。