c学习清华大学五.pptx
《c学习清华大学五.pptx》由会员分享,可在线阅读,更多相关《c学习清华大学五.pptx(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1继承与派生的概念 继承就是从一个类中继承它的特性到另一个类中。被继承的类叫做基类,继承基类的类称为派生类。派生类可以继承基类的特性并添加自己的独特特性。第1页/共45页2 继承是自然界的一个普遍的重要特性。派生使新类在继承共性的同时,具有了更加丰富多彩的个性。第2页/共45页3例:定义交通工具类,并从交通工具类派生出小汽车类和卡车类 现实世界的事物多种多样,许多事物都存在着层次关系,这种层次关系使我们找到了描述事物的解决方法。如下图是关于交通工具的一个分类层次关系图。第3页/共45页4类的层次结构图中,下层类是上层类的特殊类;下层类自动具有上层类的特性,同时也具有自身新的特性;越往层次结构图
2、的下层,其特性越具体化这种从上到下的层次结构关系体现了继承与派生的过程;C+面向对象技术也采用了这种继承机制。类的层次结构关系总结第4页/共45页5派生类派生类是在基类的基础上产生的特殊类,派生类自动继承了基类的成员;派生类具有自身的属性和行为,不然就完全等同于基类,这样就没有必要派生新类;继承是为了避免代码的重复;派生是为了使新产生的派生类除具有基类的共性之外,还具有其他个性。第5页/共45页6单继承的定义格式为:单继承的定义格式为:classclass 派生类名派生类名:继承方式继承方式 基类名基类名 派生类新定义成员派生类新定义成员;1.1.派生类的定义格式派生类的定义格式public:
3、公有派生private:私有派生protected:保护派生规定基类成员在派生类中的访问权限缺省情况下表示private方式。第6页/共45页7class Student public:void display();private:int num;char name10;char sex;基类定义第7页/共45页8class Student1:public Student public:void display()/改造的成员函数改造的成员函数 coutage:ageendl;coutaddress:addrendl;private:int age;/新新增增加加的的数数据据成成员员 char
4、 addr30;/新新增增加加的的数数据据成员成员;派生类的定义派生类的定义第8页/共45页9派生类的生成过程经历了三个步骤:吸收基类成员改造基类成员添加派生类新成员2.派生类的生成过程 第9页/共45页10(1)吸收基类成员在C+的继承机制中,派生类吸收基类中除构造函数和析构函数之外的全部成员。吸收基类成员是一个重用的过程,体现了代码的重用第10页/共45页11(2)改造基类成员 由于基类的部分成员在派生类中可能不需要却也被继承下来,对这些没有实际需要而被继承的成员,在派生类中需要对其进行改造。改造基类成员包括两个方面:(1)通过派生的三种继承方式来控制;(2)通过在派生类中定义同名成员(包
5、括成员函数和数据成员)来屏蔽在派生类中不起作用的部分基类成员。第11页/共45页12(3)添加新成员添加派生类的新成员是继承机制的核心内容。仅仅继承基类的成员是不够的,需要在派生类中添加新成员,以保证派生类自身特殊属性和行为的实现。第12页/共45页136.3 访问权限控制 根据派生类的定义格式可知,有三种继承方式。publicprotectedprivate第13页/共45页14派生类成员的访问属性派生类成员的访问属性派生类成员的访问属性派生类成员的访问属性由一个类生成的对象,它只能访问类的公有成员,不能访问其它成员:而一个类的成员函数可以访问类中所有成员!第14页/共45页15当类的继承方
6、式为public(公有)继承属性时,在派生类中,基类的公有成员和保护成员被继承后其访问属性没有变化,即分别作为派生类的公有成员和保护成员,派生类的成员可以直接访问它们。但是,在公有继承时派生类的成员无法访问基类的私有成员。1.公有继承第15页/共45页16公有继承公有继承公有继承时,派生类的对象只可访问基类中的公有成员,不能访问其它成员。派生类的成员函数可以访问基类中的公有成员派生类的成员函数可以访问基类中的公有成员和保护成员,不可访问其私有成员和保护成员,不可访问其私有成员。特别提示第16页/共45页17公有继承公有继承第17页/共45页18classstudentprivate:intag
7、e;protected:charsex;public:intGetage();classgraduatestudent:publicstudentprivate:intstunum;public:intGetnum();公有继承特点:基类的公有成员和保护成员作为派生类的成员时,都保持原有状态,而私有成员仍是私有。第18页/共45页19voidgraduatestudent:Getnum()/voidgraduatestudent:Getnum()/派生类成员函数定义派生类成员函数定义/coutage:ageendl;/coutage:ageendl;/不可访问基类的私有成员不可访问基类的私有成
8、员 coutstunum:stunumendl;/coutstunum:stunumendl;/派生类的私有成员派生类的私有成员 coutage:Getage()endl;/coutage:Getage()endl;/基类的公有成员基类的公有成员 coutsex:sexendl;coutsex:sexendl;/即:即:student:sexstudent:sex 基类的保护成员基类的保护成员 即:即:student:Getage()student:Getage()公有继承第19页/共45页20voidmain()voidmain()graduatestudentzh;/graduatestu
9、dentzh;/生成派生类对象生成派生类对象();/();/即:即:student:Getage();student:Getage();基类中的公有成员基类中的公有成员();/();/访问派生类中的公有成员访问派生类中的公有成员/coutcout;/;/即:即:即:即:student:sexstudent:sex,errorerror私有成员私有成员私有成员私有成员/coutcout;/;/errorerror私私有成员有成员有成员有成员/coutcout;/;/即:即:即:即:student:agestudent:age,errorerror保护成员保护成员保护成员保护成员 公有继承第20页
10、/共45页21在派生类中,基类的公有成员和保护成员作为派生类的私有成员,派生类的成员可以直接访问它们,而派生类的成员无法访问基类的私有成员;在派生类的外部,派生类的成员和派生类的对象均无法访问基类的全部成员;私有继承之后,全部基类成员在派生类中都成为了私有成员或不可访问的成员,无法进一步派生;私有继承方式一般很少使用。2.私有继承 第21页/共45页22私有继承时,基类的成员只能由直接派生类访问,而无法再往下继承。特别提示私有继承私有继承第22页/共45页232。私有继承第23页/共45页24特点:基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。2 私有继承c
11、lassstudentprivate:intage;protected:charsex;public:intGetage();classgraduatestudent:privatestudentprivate:intstunum;public:intGetnum();第24页/共45页25voidgraduatestudent:Getnum()/voidgraduatestudent:Getnum()/派生类成员函数定义派生类成员函数定义/coutage:ageendl;/coutage:ageendl;/不可访问基类的私有成员不可访问基类的私有成员 coutstunum:stunumend
12、l;/coutstunum:stunumendl;/派生类的私有成员派生类的私有成员 coutage:Getage()endl;/coutage:Getage()endl;/基类的公有成员基类的公有成员 coutsex:sexendl;coutsex:sexendl;/即:即:student:sexstudent:sex 基类的保护成员基类的保护成员 2 私有继承第25页/共45页26voidmain()voidmain()graduatestudentzh;/graduatestudentzh;/生成派生类对象生成派生类对象/();/();/即:即:student:Getage();stud
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学习 清华大学
限制150内