資源描述:
《C++語言程序設(shè)計(jì) 第七章 繼承性和派生類ppt課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第七章繼承性和派生類第七章繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)中重要機(jī)制之一。這種機(jī)制改變了過去傳統(tǒng)的非面向?qū)ο蟪绦蛟O(shè)計(jì)中那種對(duì)不再適合要求的用戶定義數(shù)據(jù)類型進(jìn)行改寫甚至重寫的方法,克服了傳統(tǒng)程序設(shè)計(jì)方法對(duì)編寫出來的程序無法重復(fù)使用而造成資源的浪費(fèi)的缺點(diǎn)。面向?qū)ο蟪绦蛟O(shè)計(jì)的繼承機(jī)制給我們提供了無限重復(fù)利用程序資源的一種途徑。通過C++語言中的繼承機(jī)制,可以擴(kuò)充和完善舊的程序設(shè)計(jì)以適應(yīng)新的需求,這樣不僅可以節(jié)省程序開發(fā)的時(shí)間和資源,并且為未來程序設(shè)計(jì)增添了新的資源。第一節(jié)基類和派生類第七章一、基類和派生類的基本概念:定義一個(gè)新類使其包含原來類的所有成員,同時(shí)還有自己的新成員,
2、稱這個(gè)新類是原來類的派生類(子類),原來類稱基類(父類)。二、單繼承和多繼承:?jiǎn)卫^承:只有一個(gè)基類的繼承。多繼承:具有兩個(gè)或兩個(gè)以上的基類的繼承。如圖:ABXYZ第七章三、派生類的三種繼承方式:1、公有繼承方式(public):特點(diǎn)是基類的公有成員和保護(hù)成員作為派生類的成員時(shí),它們都保持原有的狀態(tài),而基類的私有成員仍然是私有的。2、私有繼承方式(private):特點(diǎn)是基類的公有成員和保護(hù)成員都作為派生類的私有成員,并且不能被這個(gè)派生類的子類所訪問,而且基類的私有成員也仍然是私有的。3、保護(hù)繼承方式(protected):特點(diǎn)是基類的所有公有成員和保護(hù)成員都成為
3、派生類的保護(hù)成員,并且只能被它的派生類成員函數(shù)或友第七章元訪問,基類的私有成員仍然是私有的。四、派生類的定義格式:1、單繼承的定義格式:class<派生類名>:<繼承方式><基類名>{<派生類新定義成員>};2、多繼承的定義格式:class<派生類名>:<繼承方式1><基類名1>,<繼承方式2><基類名2>…{<派生類新定義成員>};第七章五、基類與派生類的關(guān)系:1、派生類是基類的具體化:基類是對(duì)若干個(gè)派生類的抽象,而派生類是基類的具體化?;惓槿×怂呐缮惖墓蔡卣鳎缮愅ㄟ^增加行為將抽象類變?yōu)槟撤N有用的類型。輸入設(shè)備鍵盤鼠標(biāo)器數(shù)字化儀第七章2、派生類是
4、基類定義的延續(xù):先定義一個(gè)抽象基類,該基類中有些操作并未實(shí)現(xiàn)。然后定義非抽象的派生類,實(shí)現(xiàn)抽象基類中定義的操作。這時(shí),派生類是抽象的基類的實(shí)現(xiàn),即可看成是基類定義的延續(xù)。這也是派生類的一種常用的方法。3、派生類是基類的組合:在多繼承時(shí),一個(gè)派生類有多于一個(gè)的基類,這時(shí)派生類將是所有基類行為組合。注意:基類和派生類是相對(duì)而言的。一個(gè)基類可以是另一個(gè)基類的派生類,這樣便形成了復(fù)雜的繼承第七章結(jié)構(gòu),出現(xiàn)了類的層次。一個(gè)基類派生出一個(gè)派生類,該派生類做另一個(gè)派生類的基類,則該派生類稱為原來基類的直接派生類,而原來基類為另一個(gè)派生類的間接基類。第二節(jié)基類成員在派生類中
5、的訪問權(quán)限第七章基類成員由于繼承方式的不同在派生類中的訪問權(quán)限不同,三種不同的繼承方式的基類特性與派生類特性如表:繼承方式基類特性派生類特性公有繼承publicprotectedprivatepublicprotected不可訪問私有繼承publicprotectedprivateprivateprivate不可訪問保護(hù)繼承publicprotectedprivateprotectedprotected不可訪問第七章1、派生類對(duì)基類成員的可訪問性:(1)、在公有繼承方式下,基類中成員在派生類中不變。(2)、在私有繼承方式下,基類中成員在派生類中為私有。(3)、在
6、保護(hù)繼承方式下,基類中成員在派生類中為保護(hù)。注意:無論哪種繼承方式派生類都不能訪問基類中私有成員。2、派生類對(duì)象對(duì)基類成員的可訪問性:只有公有繼承方式下的基類公有成員才可訪問。3、派生類的派生類對(duì)基類成員的可訪問性:第七章在公有繼承和保護(hù)繼承方式下,基類中的公有成員和保護(hù)成員都可訪問。例1、分析程序中的訪問權(quán)限,并回答所提的問題。#includeclassA{public:voidf1();protected:intj1;private:inti1;};第七章classB:publicA//B類對(duì)A類的繼承是公有繼承{public:voi
7、df2();protected:intj2;private:inti2;};classC:publicB//C類對(duì)B類的繼承是公有繼承{public:voidf3();};第七章回答下列問題:1、派生類B中成員函數(shù)f2()能否訪問基類A中的成員:f1(),i1和j1嗎?答:可以訪問f1()和j1,而不可以訪問i1。2、派生類B的對(duì)象b1能否訪問基類A中的成員:f1(),i1和j1嗎?答:可以訪問f1(),而不可以訪問i1和j1。3、派生類C中成員函數(shù)f3()能否訪問直接基類B中的成員:f2(),j2和i2嗎?能否訪問間接基類A中的成員f1(),j1和i1嗎?答:
8、可以訪問直接基類中的f2