




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、大學(xué)C+程序設(shè)計(jì)教程西安交通大學(xué)計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心大學(xué)C+程序設(shè)計(jì)教程第10章 繼承和派生本章目標(biāo)1掌握繼承和派生的概念,派生類(lèi)的定義方法。2繼承的不同方式對(duì)基類(lèi)成員的訪問(wèn)控制3掌握單繼承的概念、定義方法、單繼承派生類(lèi)構(gòu)造函數(shù)的執(zhí)行順序。4. 理解多繼承的概念5. 虛基類(lèi)的概念和定義1第10章 繼承和派生本章目標(biāo)1授課內(nèi)容10.1 基類(lèi)與派生類(lèi) 10.2 派生類(lèi)的繼承方式 10.3 派生類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù) 10.4 接口和實(shí)現(xiàn)方法的分離10.5 顯示訪問(wèn)基類(lèi)成員10.6 使用this指針2授課內(nèi)容10.1 基類(lèi)與派生類(lèi) 2水果的分類(lèi)3水果的分類(lèi)310.1 繼承和派生從一個(gè)或多個(gè)以前定義的類(lèi)
2、(基類(lèi))產(chǎn)生新類(lèi)的過(guò)程稱(chēng)為派生,這個(gè)新類(lèi)又稱(chēng)為派生類(lèi)。類(lèi)的繼承(inheritance)是指新類(lèi)從基類(lèi)那里得到基類(lèi)的特征,也就是繼承基類(lèi)的數(shù)據(jù)和函數(shù)。派生的新類(lèi)同時(shí)也可以增加或重新定義數(shù)據(jù)和操作,這就產(chǎn)生了類(lèi)的層次性。派生就是創(chuàng)建一個(gè)具有別的類(lèi)的屬性和行為的新類(lèi)的能力。派生和繼承的概念也來(lái)自于人們認(rèn)識(shí)客觀世界的過(guò)程。410.1 繼承和派生從一個(gè)或多個(gè)以前定義的類(lèi)(基類(lèi))產(chǎn)生新類(lèi)層次概念客觀世界本身是有層次的,人們認(rèn)識(shí)客觀世界的過(guò)程中,由一般到特殊的演繹思維發(fā)揮著巨大作用。演繹的過(guò)程在絕大多數(shù)情況下就表現(xiàn)為層次分類(lèi)的過(guò)程。繼承使得程序員可以在一個(gè)較一般的類(lèi)的基礎(chǔ)上很快地建立一個(gè)新類(lèi),而不必從零開(kāi)
3、始設(shè)計(jì)每個(gè)類(lèi)。5層次概念客觀世界本身是有層次的,人們認(rèn)識(shí)客觀世界的過(guò)程中,由繼承常用來(lái)表示類(lèi)屬關(guān)系,不能將繼承理解為構(gòu)成關(guān)系。當(dāng)從現(xiàn)存類(lèi)中派生出新類(lèi)時(shí),可以對(duì)派生類(lèi)做如下幾種變化: 可以增加新的數(shù)據(jù)成員; 可以增加新的成員函數(shù); 可以重新定義已有的成員函數(shù); 可以改變現(xiàn)有成員的屬性。6繼承常用來(lái)表示類(lèi)屬關(guān)系,不能將繼承理解為構(gòu)成關(guān)系。當(dāng)從現(xiàn)存類(lèi)基類(lèi)1基類(lèi)2基類(lèi)n派生類(lèi)1派生類(lèi)2基類(lèi)派生類(lèi)1派生類(lèi)2(a)多重繼承 (b)單繼承 一個(gè)基類(lèi)可以直接派生出多個(gè)派生類(lèi) 派生出來(lái)的新類(lèi)同樣可以作為基類(lèi)再繼續(xù)派生出更新的類(lèi),依此類(lèi)推形成一個(gè)層次結(jié)構(gòu)。 多重繼承與單繼承 如果一個(gè)派生類(lèi)可以同時(shí)有多個(gè)基類(lèi),稱(chēng)為
4、多重繼承(multiple-inheritance),這時(shí)的派生類(lèi)同時(shí)得到了多個(gè)已有類(lèi)的特征。一個(gè)派生類(lèi)只有一個(gè)直接基類(lèi)的情況稱(chēng)為單一繼承(single-inheritance)。7基類(lèi)1基類(lèi)2基類(lèi)n派生類(lèi)1派生類(lèi)2基類(lèi)派生類(lèi)1派生類(lèi)2(派生類(lèi)的定義格式:class 派生類(lèi)名:訪問(wèn)權(quán)限 基類(lèi)名1,訪問(wèn)限定符 基類(lèi)名2,訪問(wèn)限定符 基類(lèi)名n private:成員表1; /派生類(lèi)增加或替代的私有成員public: 成員表2; /派生類(lèi)增加或替代的公有成員protected: 成員表3; /派生類(lèi)增加或替代的保護(hù)成員;/分號(hào)不可少8派生類(lèi)的定義格式:class 派生類(lèi)名:訪問(wèn)權(quán)限 基類(lèi)其中基類(lèi)1,基
5、類(lèi)2,是已聲明的類(lèi)。 在派生類(lèi)定義的類(lèi)體中給出的成員稱(chēng)為派生類(lèi)成員,它們是新增加的數(shù)據(jù)和函數(shù)成員。這些新增加的成員是派生類(lèi)對(duì)基類(lèi)的發(fā)展,它們給派生類(lèi)添加了不同于基類(lèi)的新的屬性和功能。派生類(lèi)成員包括新添加的,也包括通過(guò)屏蔽作用,取代基類(lèi)成員的更新成員9其中基類(lèi)1,基類(lèi)2,是已聲明的類(lèi)。 在派生類(lèi)定義的類(lèi)體中 訪問(wèn)控制,亦稱(chēng)為繼承方式,是對(duì)基類(lèi)成員進(jìn)一步的限制。訪問(wèn)控制也是三種:公有(public)方式,保護(hù)(protected)方式和私有(private)方式,亦稱(chēng)公有繼承、保護(hù)繼承和私有繼承。 編制派生類(lèi)時(shí)可分四步 吸收基類(lèi)的成員 改造基類(lèi)成員 發(fā)展新成員 重寫(xiě)構(gòu)造函數(shù)與析構(gòu)函數(shù) 派生類(lèi)中成員
6、的變化不論是數(shù)據(jù)成員,還是函數(shù)成員,除構(gòu)造函數(shù)與析構(gòu)函數(shù)外全盤(pán)接收 聲明一個(gè)和某基類(lèi)成員同名的新成員派生類(lèi)中的新成員就屏蔽了基類(lèi)同名成員稱(chēng)為同名覆蓋(override) 派生類(lèi)新成員必須與基類(lèi)成員不同名,它的加入保證派生類(lèi)在功能上有所發(fā)展。 10 訪問(wèn)控制,亦稱(chēng)為繼承方式,是對(duì)基類(lèi)成員進(jìn)一步的限制。10.2 派生類(lèi)的繼承方式不可直接訪問(wèn) 不可直接訪問(wèn) private 不可直接訪問(wèn) private protected 不可直接訪問(wèn) private public 私有派生 不可直接訪問(wèn) 不可直接訪問(wèn) private 不可直接訪問(wèn) protected protected 可直接訪問(wèn) public p
7、ublic 公有派生 外部函數(shù)void main ( )在派生類(lèi)中對(duì)基類(lèi)成員的訪問(wèn)限定 基類(lèi)中的訪問(wèn)限定 派生方式 在派生類(lèi)的定義中,基類(lèi)前所加的訪問(wèn)限定符有兩方面含義:派生類(lèi)成員(新增成員)函數(shù)對(duì)基類(lèi)(繼承來(lái)的)成員的訪問(wèn)(調(diào)用和操作),和從派生類(lèi)對(duì)象之外對(duì)派生類(lèi)對(duì)象中的基類(lèi)成員的訪問(wèn)。公有派生是絕對(duì)主流。 1110.2 派生類(lèi)的繼承方式不可直接訪問(wèn) 不可直接訪問(wèn) pr實(shí)例:公有繼承(public) class Person/人員類(lèi)定義protected:char Name10;/姓名intAge;/年齡charSex;/性別 public:void Register(char *name,
8、 int age, char sex) ;void ShowMe();12實(shí)例:公有繼承(public) class Person/class Employee: public Person /雇員類(lèi)定義char Dept20;/工作部門(mén)float Salary; /月薪public: Employee() ;void EmployeeRegister(char *name, int age, char sex, char *dept, float salary);void ShowEmp(); /顯示雇員信息 ;13class Employee: public Person 保護(hù)繼承(pub
9、lic)保護(hù)繼承方式創(chuàng)建的派生類(lèi)對(duì)基類(lèi)各種成員訪問(wèn)權(quán)限如下 :基類(lèi)的公有成員和保護(hù)成員都相當(dāng)于派生類(lèi)的保護(hù)成員,派生類(lèi)可以通過(guò)自身的成員函數(shù)或其子類(lèi)的成員函數(shù)訪問(wèn)他們對(duì)于基類(lèi)的私有成員,無(wú)論派生類(lèi)內(nèi)部成員或派生類(lèi)使用者都無(wú)法直接訪問(wèn) 14保護(hù)繼承(public)保護(hù)繼承方式創(chuàng)建的派生類(lèi)對(duì)基類(lèi)各種10.3 派生類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)派生類(lèi)構(gòu)造函數(shù)的一般形式為:派生類(lèi)名:派生類(lèi)名(參數(shù)總表):基類(lèi)名1(參數(shù)表1),基類(lèi)名n(參數(shù)表n),內(nèi)嵌對(duì)象名1(對(duì)象參數(shù)表1),內(nèi)嵌對(duì)象名m(對(duì)象參數(shù)表m)派生類(lèi)新增加成員的初始化;派生類(lèi)與基類(lèi)的析構(gòu)函數(shù)沒(méi)有什么聯(lián)系,彼此獨(dú)立,派生類(lèi)或基類(lèi)的析構(gòu)函數(shù)只作各自類(lèi)對(duì)
10、象消亡前的善后工作1510.3 派生類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)派生類(lèi)構(gòu)造函數(shù)的一般形式派生類(lèi)構(gòu)造函數(shù)各部分的執(zhí)行次序?yàn)椋?.調(diào)用基類(lèi)構(gòu)造函數(shù),按它們?cè)谂缮?lèi)定義的先后順序,順序調(diào)用。 2.調(diào)用內(nèi)嵌對(duì)象構(gòu)造函數(shù),調(diào)用次序按各個(gè)對(duì)象在派生類(lèi)內(nèi)聲明的順序。3.派生類(lèi)的構(gòu)造函數(shù)體中的操作。*在派生類(lèi)構(gòu)造函數(shù)中,只要基類(lèi)不是使用缺省構(gòu)造函數(shù)都要顯式給出基類(lèi)名和參數(shù)表。如果基類(lèi)沒(méi)有定義構(gòu)造函數(shù),則派生類(lèi)也可以不定義,全部采用系統(tǒng)給定的缺省構(gòu)造函數(shù)。如果基類(lèi)定義了帶有形參表的構(gòu)造函數(shù)時(shí),派生類(lèi)就應(yīng)當(dāng)定義構(gòu)造函數(shù)。16派生類(lèi)構(gòu)造函數(shù)各部分的執(zhí)行次序?yàn)椋?.調(diào)用基類(lèi)構(gòu)造函數(shù),按它例10-3 派生類(lèi)構(gòu)造函數(shù)和析構(gòu)函數(shù)
11、的執(zhí)行 #include #include class Person char Name10; intAge;public:Person(char* name,int age) strcpy(Name, name);Age = age;coutconstructor of personNameendl; Person() coutdeconstrutor of personNameendl;17例10-3 派生類(lèi)構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行 #includeclass Employee : public Personchar Dept20;PersonWang;public:Employee(ch
12、ar *name, int age, char *dept, char *name1, int age1): Person(name,age) , Wang(name1,age1)strcpy(Dept, dept);coutconstructor of Employeeendl;Employee() coutdeconstrucor of Employeeendl; ;18class Employee : public Personint main() Employee emp(張弓長(zhǎng),40,人事處,李木子,36);return 0;19int main()19派生類(lèi)構(gòu)造函數(shù)的執(zhí)行次序首先,
13、調(diào)用基類(lèi)構(gòu)造函數(shù),調(diào)用順序按照它們被繼承時(shí)聲明的基類(lèi)名順序執(zhí)行。其次,調(diào)用內(nèi)嵌對(duì)象構(gòu)造函數(shù),調(diào)用次序按各個(gè)對(duì)象在派生類(lèi)內(nèi)聲明的順序。最后,執(zhí)行派生類(lèi)構(gòu)造函數(shù)體中的內(nèi)容。 20派生類(lèi)構(gòu)造函數(shù)的執(zhí)行次序首先,調(diào)用基類(lèi)構(gòu)造函數(shù),調(diào)用順序按照析構(gòu)函數(shù) 派生類(lèi)析構(gòu)函數(shù)執(zhí)行過(guò)程恰與構(gòu)造函數(shù)執(zhí)行過(guò)程相反。首先執(zhí)行派生類(lèi)析構(gòu)函數(shù)然后執(zhí)行內(nèi)嵌對(duì)象的析構(gòu)函數(shù)最后執(zhí)行基類(lèi)析構(gòu)函數(shù) 21析構(gòu)函數(shù) 派生類(lèi)析構(gòu)函數(shù)執(zhí)行過(guò)程恰與構(gòu)造函數(shù)執(zhí)行過(guò)程相反。2自學(xué)內(nèi)容接口與實(shí)現(xiàn)方法的分離顯式訪問(wèn)基類(lèi)成員this指針22自學(xué)內(nèi)容接口與實(shí)現(xiàn)方法的分離22程序設(shè)計(jì)舉例例10-6 一個(gè)基類(lèi)及其兩個(gè)派生類(lèi)例10-7 多重繼承,從多個(gè)基類(lèi)派生出來(lái)的類(lèi)class Derived : public Base1, public Base2double real; public:Derived( int, char, double );double getReal() const;void Output(); 23程序設(shè)計(jì)舉例例10-6 一個(gè)基類(lèi)及其兩個(gè)派生類(lèi)23編程實(shí)例:棋子類(lèi)class ChineseStone : public Stonechar strType10;/ 棋子類(lèi)型intR;/ 棋子半徑public:ChineseSt
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能家居光電子器件的集成與智能語(yǔ)音助手集成技術(shù)考核試卷
- 自動(dòng)化生產(chǎn)線智能化改造的本土化路徑探索考核試卷
- 期末應(yīng)用題易錯(cuò)題:長(zhǎng)方體和正方體(含答案)-北師大版五年級(jí)數(shù)學(xué)下冊(cè)
- 加氫處理在生物基材料合成中的應(yīng)用研究考核試卷
- 農(nóng)用薄膜市場(chǎng)分析考核試卷
- 體育場(chǎng)音頻設(shè)備租賃服務(wù)質(zhì)量標(biāo)準(zhǔn)考核試卷
- 互聯(lián)網(wǎng)+公共服務(wù)平臺(tái)在鄉(xiāng)村振興戰(zhàn)略規(guī)劃中的角色考核試卷
- 抗滑性能檢測(cè)在緊急疏散通道中的應(yīng)用規(guī)范考核試卷
- 煤質(zhì)化驗(yàn)工職業(yè)技能考試題庫(kù)(含各題型)
- 化學(xué)反應(yīng)中的能量變化化學(xué)反應(yīng)速率與平衡
- 青少年應(yīng)急救援技能的培養(yǎng)與提升
- 氣霧培蔬菜流程
- 2021年高考語(yǔ)文全國(guó)卷二模試卷(含答案解析)
- 2025年中國(guó)動(dòng)態(tài)空氣消毒器市場(chǎng)現(xiàn)狀分析及前景預(yù)測(cè)報(bào)告
- 戰(zhàn)略物資儲(chǔ)備安全-洞察闡釋
- 機(jī)修工操作安全培訓(xùn)課件
- 2025黑龍江省建工集團(tuán)招聘17人筆試參考題庫(kù)附帶答案詳解
- 2025-2030中國(guó)電焊機(jī)行業(yè)發(fā)展趨勢(shì)與前景預(yù)測(cè)分析研究報(bào)告
- 勞工與人權(quán)管理制度
- 全過(guò)程工程咨詢(xún)投標(biāo)方案(技術(shù)方案)
- 部編人教版5年級(jí)上冊(cè)語(yǔ)文全冊(cè)教學(xué)課件
評(píng)論
0/150
提交評(píng)論