版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
繼承與多態(tài)本章內(nèi)容第一節(jié)繼承第二節(jié)多態(tài)第一節(jié)類一、繼承的概念繼承就是在一個(gè)已存在的類的基礎(chǔ)上創(chuàng)建一個(gè)新類父類(基類)是已存在的類子類(派生類)是新建立的類子類只有一個(gè)父類,稱為單繼承。一個(gè)子類可以有兩個(gè)或多個(gè)父類,稱為多繼承。派生和繼承實(shí)際上是從不同的角度描述了同一個(gè)概念。繼承是兒子接收父親的產(chǎn)業(yè),派生是父親把產(chǎn)業(yè)傳承給兒子。子類繼承了父類,父類派生出子類。二、派生類定義派生類定義形式:class子類名:繼承方式父類名{ //子類新定義的成員}父類名是已有類的名稱,子類名是新建的類名。繼承方式有public(公有繼承)、private(私有繼承)和protected(保護(hù)繼承)。默認(rèn)的繼承方式是private。例15-1:基類和派生類的定義和使用。將Student類和Teacher類的公有數(shù)據(jù)提取出來(lái),封裝成Person基類。由基類派生出Student類和Teacher類,Student類和Teacher類包含了新增成員。#include<iostream>usingnamespacestd;//基類Person,數(shù)據(jù)成員有姓名、年齡和性別;成員函數(shù)有輸入數(shù)據(jù)和輸出數(shù)據(jù)classPerson{private: stringname; //姓名 intage; //年齡 stringgender; //性別public: voidset(stringxm,intnl,stringxb)//成員函數(shù):輸入數(shù)據(jù) { name=xm;age=nl;gender=xb; } voiddisplay() //成員函數(shù):輸出數(shù)據(jù) { cout<<name<<""<<age<<""<<""<<gender<<""; }};//派生類Student,除了繼承Person基類的成員,還新增了成員classStudent:publicPerson{private: stringmajor; //新增私有成員:學(xué)生的專業(yè)public: //新增成員函數(shù)
voidsetStu(stringzy) //設(shè)置學(xué)生的專業(yè)
{ major=zy; } voiddisplayStu() //輸出學(xué)生的專業(yè)
{ cout<<major<<endl; }};//派生類Teacher,除了繼承Person的成員,還新增了成員classTeacher:publicPerson{private: stringprofession; //新增私有成員:教師的職稱public: //新增成員函數(shù)
voidsetTea(stringxm,intnl,stringxb,stringzc) { profession=zc; set(xm,nl,xb);//派生類函數(shù)中直接調(diào)用基類的公有成員set() } voiddisplayTea() { display(); //派生類函數(shù)中直接調(diào)用基類的公有成員display() cout<<profession<<endl; }};intmain(){ Students; //派生類對(duì)象s s.set("李派生",18,"famale");//派生類對(duì)象直接調(diào)用基類的公有成員set() s.setStu("計(jì)算機(jī)"); //派生類對(duì)象直接調(diào)用自己的公有成員setStu() s.display(); //派生類對(duì)象直接調(diào)用基類的公有成員display() s.displayStu(); //派生類對(duì)象直接調(diào)用自己的公有成員displayStu() Teachert; //派生類對(duì)象t t.setTea("梁繼承",50,"male","教授");//直接調(diào)用自己的公有成員setTea() t.displayTea(); ////直接調(diào)用自己的公有成員displayTea()}三、子類對(duì)父類的訪問(wèn)權(quán)限子類繼承了父類的全部成員,除了構(gòu)造函數(shù)和析構(gòu)函數(shù)子類可以訪問(wèn)父類的公有成員以公有繼承(Public)方式創(chuàng)建的子類對(duì)父類成員的訪問(wèn)權(quán)限:子類無(wú)法直接訪問(wèn)父類的私有成員第二節(jié)多態(tài)一、多態(tài)的概念多態(tài)按字面的意思就是多種形態(tài),多態(tài)是指不同的對(duì)象完成某個(gè)行為時(shí)會(huì)產(chǎn)生不同的狀態(tài)和結(jié)果。二、多態(tài)的形式編譯時(shí)的多態(tài)多態(tài)運(yùn)行時(shí)的多態(tài)函數(shù)重載運(yùn)算符重載運(yùn)行時(shí)多態(tài)的條件:有繼承關(guān)系父類中的成員函數(shù)是虛函數(shù),且子類重寫(xiě)虛函數(shù)通過(guò)父類的指針或者引用調(diào)用虛函數(shù)三、虛函數(shù)virtual函數(shù)類型函數(shù)名(參數(shù)表);{ //函數(shù)體}虛函數(shù)是在基類中聲明為virtual的成員函數(shù)。虛函數(shù)對(duì)于多態(tài)具有決定性的作用,有虛函數(shù)才能構(gòu)成多態(tài)。1、虛函數(shù)的聲明形式例15-2:當(dāng)學(xué)校的上課鈴響之后,學(xué)生(Student)、教師(Teacher)和校長(zhǎng)(Principal)會(huì)對(duì)“鈴聲響”表現(xiàn)出不同的行為。用虛函數(shù)實(shí)現(xiàn)多態(tài)。在基類中聲明一個(gè)虛函數(shù),然后在一個(gè)或多個(gè)派生類中對(duì)其進(jìn)行重寫(xiě)。形式上是調(diào)用從基類繼承的同一個(gè)成員函數(shù),實(shí)際上會(huì)自動(dòng)調(diào)用各自派生類的同名成員函數(shù),這就是所謂的多態(tài)。簡(jiǎn)而言之就是“一種接口,多種方法”。#include<iostream>usingnamespacestd;//父類PersonclassPerson{private: stringname; //姓名
intage; //年齡
stringgender; //性別public: virtualvoidbellring() //父類虛函數(shù)
{ cout<<"鈴聲響,我是......"<<endl; }};//子類StudentclassStudent:publicPerson{public: voidbellring()//子類虛函數(shù)
{ cout<<"鈴聲響,我是學(xué)生,在教室聽(tīng)課"<<endl; }};//子類TeacherclassTeacher:publicPerson{public: voidbellring()//子類虛函數(shù)
{ cout<<"鈴聲響,我是教師,在教室講課"<<endl; }};//子類PrincipalclassPrincipal:publicPerson{public: voidbellring() //子類虛函數(shù)
{ cout<<"鈴聲響,我是校長(zhǎng),在校園檢查"<<endl; }};intmain(){ Person*p; //聲明父類對(duì)象指針p Students; //聲明Student類的對(duì)象s p=&s; //用Student對(duì)象的地址給父類指針賦值
p->bellring(); //調(diào)用Student對(duì)象的成員函數(shù)bellring()
Teachert; //聲明Teacher類的對(duì)象s p=&t; //用Teacher對(duì)象的地址給父類指針賦值
p->bellring(); //調(diào)用Teacher對(duì)象的成員函數(shù)bellring() Principalpr; //聲明Principal類的對(duì)象s p=&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版小學(xué)四年級(jí)數(shù)學(xué)上期教案
- 2024高中地理第六章人類與地理環(huán)境的協(xié)調(diào)發(fā)展第1節(jié)人地關(guān)系思想的練習(xí)含解析新人教版必修2
- 2024高中生物第2章動(dòng)物和人體生命活動(dòng)的調(diào)節(jié)第3節(jié)神經(jīng)調(diào)節(jié)與體液調(diào)節(jié)的關(guān)系課堂演練含解析新人教版必修3
- 2024高中語(yǔ)文第二單元古代記敘散文第5課荊軻刺秦王學(xué)案新人教版必修1
- 2024高考地理一輪復(fù)習(xí)第五部分選修地理-重在遷移第43講環(huán)境保護(hù)課時(shí)作業(yè)含解析新人教版
- 2024高考地理一輪復(fù)習(xí)第一部分自然地理-重在理解第一章行星地球第3講地球的宇宙環(huán)境及地球的圈層結(jié)構(gòu)學(xué)案新人教版
- 誤解以后心健教案
- (4篇)2024年幼兒園教師年度個(gè)人總結(jié)
- 施工測(cè)量控制措施
- 2024年渤海船舶職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 影像敘事語(yǔ)言智慧樹(shù)知到答案章節(jié)測(cè)試2023年中國(guó)傳媒大學(xué)
- 流體力學(xué)(清華大學(xué)張兆順54講) PPT課件 1
- 銷售人員末位淘汰制度
- 南陽(yáng)石油分公司非油品業(yè)務(wù)經(jīng)營(yíng)管理制度概要
- YS/T 431-2009鋁及鋁合金彩色涂層板、帶材
- GB/T 2843-1981鋼化玻璃抗沖擊性試驗(yàn)方法(227克鋼球試驗(yàn))
- FZ/T 73042-2011針織圍巾、披肩
- 統(tǒng)編部編版三年級(jí)道德與法治下冊(cè)優(yōu)秀課件【全冊(cè)】
- 生物質(zhì)能完整資料課件
- 《家庭、私有制和國(guó)家的起源》
- 熱工過(guò)程自動(dòng)控制課件
評(píng)論
0/150
提交評(píng)論