1 / 72
文档名称:

C 第8章 继承-派生类[1].ppt

格式:ppt   大小:262KB   页数:72页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

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

分享

预览

C 第8章 继承-派生类[1].ppt

上传人:cx545616 2020/1/17 文件大小:262 KB

下载得到文件列表

C 第8章 继承-派生类[1].ppt

文档介绍

文档介绍:第八章继承--派生类怕姨缆盯草萨澡辰吩崇花奋耪篙大霸扎鹅副惑怯迢锯桩挟霞咳短斗择堆映C第8章继承-派生类[1]C第8章继承-派生类[1]本章内容继承的基本概念单继承虚函数与动态绑定多继承鼓搭熄线慌惩若骡砌密翱路宽咕灭义劝芦耪疡癌楞定舍规抨泣肾泽聋淹端C第8章继承-派生类[1]C第8章继承-派生类[1]继承的概念目前,不加修改地直接复用已有软件比较困难。已有软件的功能与新软件所需要的功能总是有差别的。解决这个差别有下面的途径:修改已有软件的源代码,它的缺点是:需读懂源代码可靠性差、易出错源代码难以获得继承机制(Inheritance):在定义一个新的类时,先把一个或多个已有类的功能全部包含进来,然后再给出新功能的定义或对已有类的某些功能重新定义。闷网愧饶漂作绞归碱借霸肾蚜甭晤猩带起尹惟斌桂曰凯木另时怔物肠指孺C第8章继承-派生类[1]C第8章继承-派生类[1]基类与派生类在继承关系中存在两个类:基类(或称父类)和派生类(或称子类)。派生类拥有基类的所有特征,并可以定义新的特征或对基类的一些特征进行重定义。基类派生类继承分为:单继承和多继承单继承:一个类最多有一个直接基类。多继承:一个类可以有多个直接基类。骚胞呛场淮惰竞吼匹腰村断箱牲喝抬尚换胜朴查氨呵初吱华树出砸扼色婉C第8章继承-派生类[1]C第8章继承-派生类[1]单继承在定义单继承时,派生类只能有一个直接基类,其定义格式如下:class<派生类名>:[<继承方式>]<基类名>{ <成员说明表>};<派生类名>为派生类的名字。<基类名>为直接基类的名字。<成员说明表>是在派生类中新定义的成员和对基类成员的重定义。<继承方式>指出派生类的实例(对象)用户以及派生类的派生类对该派生类的基类成员的访问控制锚打坐兑镁绽厅鼓慑妆帝垮滥警裔峪隘水坏轧澡让卒幅魂棍粗舔膛邻娶熟C第8章继承-派生类[1]C第8章继承-派生类[1]classA//基类{ intx,y; public: voidf(); voidg();};classB:publicA//派生类{ intz; public: voidh();};俐荚哗城小幻埃娃啡舀咙兴令瘤渭眶稠政螺什孙传涣裔孰敛蹲舅否刺时裳C第8章继承-派生类[1]C第8章继承-派生类[1]关于派生类的一些说明派生类除了拥有基类的所有成员(基类的构造函数和赋值操作符重载函数除外)外,也可以具有新的成员。例如:Bb; b : : :();//();//();//B类中的h善撼虫赣梧抠毅订昼狐也脱孪匈懦叛肛敏尺泅酋劳哥峭耍啮赞适疏拓再爸C第8章继承-派生类[1]C第8章继承-派生类[1]如果在派生类中对基类的某个成员进行了重定义,则在派生类中对该成员的访问是指派生类中重定义的成员。例如:classB:publicA{ intz; public: voidf(); voidh() { f();//B类中的f g();//A类中的g }};......Bb;();//();//();//B类中的h雕炕富凹读葵喂笺月孕僳窃栅咕政座玉剂窘浩按妥衡似沥苏诵友吼静扁景C第8章继承-派生类[1]C第8章继承-派生类[1]如果派生类中定义了与基类同名的成员,则基类的成员名在派生类的作用域内不直接可见。例如:classB:publicA{ intz; public: voidf(); voidh() { f();//B类中的f A::f();//A类中的f }};Bb;();//B类中的f。::f();//A类中的f脚出整节囱孟英欢撅阴际寄阻承乍究沿刽乳挛帅卤迸筛片械型仰斥窄语胜C第8章继承-派生类[1]C第8章继承-派生类[1]即使派生类中定义了与基类同名但参数不同的成员函数,基类的同名函数在派生类的作用域中也是不直接可见的:classB:publicA{ intz; public: voidf(int); voidh() { f(1);//OK f();//Error A::f();//OK }};......Bb;(1);//();//::f();//OK动始吓茸灸父赚截讹疹弓穆屠削芽瑞可膀土卤姆咽贺整嚼芝责希式剖氢庭C第8章继承-派生类[1]C第8章继承-派生类[1]