計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)課件:繼承與多態(tài)_第1頁(yè)
計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)課件:繼承與多態(tài)_第2頁(yè)
計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)課件:繼承與多態(tài)_第3頁(yè)
計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)課件:繼承與多態(tài)_第4頁(yè)
計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)課件:繼承與多態(tài)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論