C++语言程序设计教程第二版清华出版杨进才第8章继承与派生.ppt

C++语言程序设计教程第二版清华出版杨进才第8章继承与派生.ppt

ID:55795213

大小:618.50 KB

页数:45页

时间:2020-06-07

C++语言程序设计教程第二版清华出版杨进才第8章继承与派生.ppt_第1页
C++语言程序设计教程第二版清华出版杨进才第8章继承与派生.ppt_第2页
C++语言程序设计教程第二版清华出版杨进才第8章继承与派生.ppt_第3页
C++语言程序设计教程第二版清华出版杨进才第8章继承与派生.ppt_第4页
C++语言程序设计教程第二版清华出版杨进才第8章继承与派生.ppt_第5页
资源描述:

《C++语言程序设计教程第二版清华出版杨进才第8章继承与派生.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章继承与派生制作人:沈显君杨进才C++语言程序设计教程第8章继承与派生C++语言程序设计教程第8章继承与派生第8章继承与派生学习目标掌握派生与继承的概念与使用方法;能够运用继承机制对现有的类进行重用;掌握继承中的构造函数与析构函数的调用顺序;为派生类设计合适的构造函数初始化派生类;掌握处理多继承时的二义性问题;掌握虚基类的概念与使用方法。8.1继承与派生在C++中,可以利用已有的类来定义新的类,新类将拥有原有类的全部特性,原有类被称为基类(Baseclass)或父类(Superclass),新产生的类被称为派生类(Derived

2、class)或子类(Subclass)。派生类拥有基类的特性称作继承,由基类产生派生类的过程称为派生。8.1.1继承的概念每一个派生类都有且仅有一个基类,派生类可以看作是基类的特例,它增加了某些基类所没有的性质。这种继承方式,称为单继承或单向继承。现实生活中,子女的外貌、血型往往不是仅仅继承自父亲或母亲,而是将父母亲的特点都继承下来。与之相类似,如果一个派生类有两个或两个以上的基类,则称为多继承或多重继承。派生类又作为基类,继续派生新的类,这样的派生方式称为多层派生,从继承的角度看称为多层继承。C++语言程序设计教程第8章继承与派生

3、C++语言程序设计教程第8章继承与派生8.1.1继承的概念派生类定义的语法为:class派生类名:继承方式1基类名1,继承方式2基类名2,…{private:派生类的私有数据和函数public:派生类的公有数据和函数protected:派生类的保护数据和函数};8.1.2派生类实现1.派生类的定义C++语言程序设计教程第8章继承与派生“继承方式1基类名1,继承方式2基类名2,…”为基类名表,表示当前定义的派生类的各个基类。如果基类名表中只有一个基类,表示定义的是单继承;如果基类名表中有多个基类,表示定义的是多继承。继承方式指定了派生

4、类成员以及类外对象对于从基类继承来的成员的访问权限。继承方式有三种:public:公有继承;private:私有继承;protected:保护继承。8.1.2派生类实现classClock{private:intH,M,S;public:voidSetTime(intH=0,intM=0,intS=0);voidShowTime();Clock(intH=0,intM=0,intS=0);~Clock();};classAlarmClock:publicClock{private:intAH,AM;//响铃的时间boolOpenAl

5、arm;//是否关闭闹钟public:voidSetAlarm(intAH,intAM);//设置响铃时间voidSwitchAlarm(boolOpen=true);//打开/关闭闹铃voidShowTime();//显示当前时间与闹铃时间}C++语言程序设计教程第8章继承与派生在派生类的定义中,每一种继承方式只限定紧跟其后的那个基类。如果不显式给出继承方式,系统默认为私有继承。【例如】在普通的时钟类Clock基础上派生出闹钟类AlarmClock:类名成员名AlarmClock::Clock::H,M,SSetTime()Sho

6、wTime()AH,AM,OpenAlarmSetAlarm()SwitchAlarm()ShowTime()AlarmClock()派生类AlarmClock的成员构成图(表)8.1.2派生类实现C++语言程序设计教程第8章继承与派生2.派生类的实现方式(1)吸收基类成员基类的全部成员被派生类继承,作为派生类成员的一部分。如:Clock类中的数据成员H、M、S,成员函数SetTime()、ShowTime()经过派生,成为派生类AlarmClock的成员。(2)改造基类成员派生类根据实际情况对继承自基类的某些成员进行限制和改造。对

7、基类成员的访问限制主要通过继承方式来实现;对基类成员的改造主要通过同名覆盖来实现,即在派生类中定义一个与基类成员同名的新成员(如果是成员函数,则函数参数表也必须相同,否则,C++会认为是函数重载)。当通过派生类对象调用该成员时,C++将自动调用派生类中重新定义的同名成员,而不会调用从基类中继承来的同名成员,这样派生类中的新成员就“覆盖”了基类的同名成员。由此可见,派生类中的成员函数具有比基类中同名成员函数更小的作用域。如:AlarmClock类中的成员函数ShowTime()覆盖了基类Clock中的同名成员函数ShowTime()。

8、(3)添加新成员派生类在继承基类成员的基础之上,根据派生类的实际需要,增加一些新的数据成员和函数成员,以描述某些新的属性和行为。如:AlarmClock添加了数据成员AH、AM、OpenAlarm,成员函数SetAlarm()、Swi

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

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

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