![计算机程序设计基础课件:继承与多态_第1页](http://file4.renrendoc.com/view14/M05/06/14/wKhkGWd6rraAKImLAAFodN0IoAo118.jpg)
![计算机程序设计基础课件:继承与多态_第2页](http://file4.renrendoc.com/view14/M05/06/14/wKhkGWd6rraAKImLAAFodN0IoAo1182.jpg)
![计算机程序设计基础课件:继承与多态_第3页](http://file4.renrendoc.com/view14/M05/06/14/wKhkGWd6rraAKImLAAFodN0IoAo1183.jpg)
![计算机程序设计基础课件:继承与多态_第4页](http://file4.renrendoc.com/view14/M05/06/14/wKhkGWd6rraAKImLAAFodN0IoAo1184.jpg)
![计算机程序设计基础课件:继承与多态_第5页](http://file4.renrendoc.com/view14/M05/06/14/wKhkGWd6rraAKImLAAFodN0IoAo1185.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
继承与多态本章内容第一节继承第二节多态第一节类一、继承的概念继承就是在一个已存在的类的基础上创建一个新类父类(基类)是已存在的类子类(派生类)是新建立的类子类只有一个父类,称为单继承。一个子类可以有两个或多个父类,称为多继承。派生和继承实际上是从不同的角度描述了同一个概念。继承是儿子接收父亲的产业,派生是父亲把产业传承给儿子。子类继承了父类,父类派生出子类。二、派生类定义派生类定义形式:class子类名:继承方式父类名{ //子类新定义的成员}父类名是已有类的名称,子类名是新建的类名。继承方式有public(公有继承)、private(私有继承)和protected(保护继承)。默认的继承方式是private。例15-1:基类和派生类的定义和使用。将Student类和Teacher类的公有数据提取出来,封装成Person基类。由基类派生出Student类和Teacher类,Student类和Teacher类包含了新增成员。#include<iostream>usingnamespacestd;//基类Person,数据成员有姓名、年龄和性别;成员函数有输入数据和输出数据classPerson{private: stringname; //姓名 intage; //年龄 stringgender; //性别public: voidset(stringxm,intnl,stringxb)//成员函数:输入数据 { name=xm;age=nl;gender=xb; } voiddisplay() //成员函数:输出数据 { cout<<name<<""<<age<<""<<""<<gender<<""; }};//派生类Student,除了继承Person基类的成员,还新增了成员classStudent:publicPerson{private: stringmajor; //新增私有成员:学生的专业public: //新增成员函数
voidsetStu(stringzy) //设置学生的专业
{ major=zy; } voiddisplayStu() //输出学生的专业
{ cout<<major<<endl; }};//派生类Teacher,除了继承Person的成员,还新增了成员classTeacher:publicPerson{private: stringprofession; //新增私有成员:教师的职称public: //新增成员函数
voidsetTea(stringxm,intnl,stringxb,stringzc) { profession=zc; set(xm,nl,xb);//派生类函数中直接调用基类的公有成员set() } voiddisplayTea() { display(); //派生类函数中直接调用基类的公有成员display() cout<<profession<<endl; }};intmain(){ Students; //派生类对象s s.set("李派生",18,"famale");//派生类对象直接调用基类的公有成员set() s.setStu("计算机"); //派生类对象直接调用自己的公有成员setStu() s.display(); //派生类对象直接调用基类的公有成员display() s.displayStu(); //派生类对象直接调用自己的公有成员displayStu() Teachert; //派生类对象t t.setTea("梁继承",50,"male","教授");//直接调用自己的公有成员setTea() t.displayTea(); ////直接调用自己的公有成员displayTea()}三、子类对父类的访问权限子类继承了父类的全部成员,除了构造函数和析构函数子类可以访问父类的公有成员以公有继承(Public)方式创建的子类对父类成员的访问权限:子类无法直接访问父类的私有成员第二节多态一、多态的概念多态按字面的意思就是多种形态,多态是指不同的对象完成某个行为时会产生不同的状态和结果。二、多态的形式编译时的多态多态运行时的多态函数重载运算符重载运行时多态的条件:有继承关系父类中的成员函数是虚函数,且子类重写虚函数通过父类的指针或者引用调用虚函数三、虚函数virtual函数类型函数名(参数表);{ //函数体}虚函数是在基类中声明为virtual的成员函数。虚函数对于多态具有决定性的作用,有虚函数才能构成多态。1、虚函数的声明形式例15-2:当学校的上课铃响之后,学生(Student)、教师(Teacher)和校长(Principal)会对“铃声响”表现出不同的行为。用虚函数实现多态。在基类中声明一个虚函数,然后在一个或多个派生类中对其进行重写。形式上是调用从基类继承的同一个成员函数,实际上会自动调用各自派生类的同名成员函数,这就是所谓的多态。简而言之就是“一种接口,多种方法”。#include<iostream>usingnamespacestd;//父类PersonclassPerson{private: stringname; //姓名
intage; //年龄
stringgender; //性别public: virtualvoidbellring() //父类虚函数
{ cout<<"铃声响,我是......"<<endl; }};//子类StudentclassStudent:publicPerson{public: voidbellring()//子类虚函数
{ cout<<"铃声响,我是学生,在教室听课"<<endl; }};//子类TeacherclassTeacher:publicPerson{public: voidbellring()//子类虚函数
{ cout<<"铃声响,我是教师,在教室讲课"<<endl; }};//子类PrincipalclassPrincipal:publicPerson{public: voidbellring() //子类虚函数
{ cout<<"铃声响,我是校长,在校园检查"<<endl; }};intmain(){ Person*p; //声明父类对象指针p Students; //声明Student类的对象s p=&s; //用Student对象的地址给父类指针赋值
p->bellring(); //调用Student对象的成员函数bellring()
Teachert; //声明Teacher类的对象s p=&t; //用Teacher对象的地址给父类指针赋值
p->bellring(); //调用Teacher对象的成员函数bellring() Principalpr; //声明Principal类的对象s p=&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度工程项目造价评估委托合同
- 2025年住宅租赁协议
- 2025年度员工策划知识产权保密合同
- 2025年住宅租赁权交接协议
- 2025年环境监测项目立项申请报告模稿
- 2025年融资租赁共同承租合同范文
- 2025年高通量试验反应堆及配套产品项目申请报告
- 2025年网安系统项目提案报告
- 2025年农村物资配送代理合同
- 2025年区域配送营业代理协议书样本
- 幼儿园木工坊安全教育
- 2024年高考语文一轮复习:文言文文意概括简答题知识清单 (二)
- 康复科工作计划及实施方案
- 纵隔肿物的护理查房
- 新能源汽车概论题库
- 设备维保的维修成本和维护费用
- 解决问题的工作方案
- 2024年潍坊护理职业学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 客运站员工安全生产教育培训
- 口腔预防儿童宣教
- 绿城桃李春风推广方案
评论
0/150
提交评论