資源描述:
《《派生類與繼承》PPT課件.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第4章派生類與繼承4.1繼承與派生類4.1.1為什么要使用繼承重用:通過繼承機制,利用已有的類來定義新類,新的類不僅可以有新的成員,還擁有從已有的類繼承來的成員。已有的類稱為基類或父類,新的類稱為派生類或子類。如果派生類從一個基類派生的,稱這種繼承為單繼承;如果派生類從多個基類派生的,稱這種繼承為多繼承。4.1繼承與派生類單繼承4.1繼承與派生類多繼承4.1繼承與派生類4.1.2派生類的聲明如果不采用派生類方法classperson{protected:charname[10];intage;charsex;public:voidprint();}
2、;classemployee{protected:charname[10];intage;charsex;chardepartment[20];floatsalary;public:print();};重復(fù)書寫!!4.1繼承與派生類改寫//定義一個基類classperson{protected:charname[10];intage;charsex;public://……};//定義一個派生類classemployee:publicperson{protected:chardepartment[20];floatsalary;public://……
3、};4.1繼承與派生類聲明一個派生類的一般格式為:class派生類名:繼承方式基類名{派生類新定義成員};其中,繼承方式有3種:public(公有派生)、private(私有派生,缺省情況下也如此)、protected(保護派生)。由類person繼承出類employee可以采用下面的三種格式之一:(1)公有繼承classemployee:publicperson{//…};(2)私有繼承classemployee:privateperson{//…};(3)保護繼承classemployee:protectedperson{//…};4.1繼承與
4、派生類派生類的變異功能從已有類派生出新類時,可以在派生類內(nèi)完成以下幾種功能:(1)可以增加新的數(shù)據(jù)成員;(2)可以增加新的成員函數(shù);(3)可以重新定義基類中已有的成員函數(shù);(4)可以改變現(xiàn)有成員的屬性。4.1繼承與派生類4.1.3基類成員在派生類中的訪問屬性在基類中的訪問屬性繼承方式在派生類中的訪問屬性privatepublic不可直接訪問privateprivate不可直接訪問privateprotected不可直接訪問publicpublicpublicpublicprivateprivatepublicprotectedprotectedpr
5、otectedpublicprotectedprotectedprivateprivateprotectedprotectedprotected4.1繼承與派生類不可見可見可見4.1.4派生類對基類成員的訪問規(guī)則派生類對基類成員的訪問形式主要有以下兩種:(1)內(nèi)部訪問:由派生類中新增成員對基類繼承來的成員的訪問。(2)對象訪問:在派生類外部,通過派生類的對象對從基類繼承來的成員的訪問。4.1繼承與派生類私有繼承的訪問規(guī)則基類的public成員和protected成員被繼承后作為派生類的private成員,派生類的其他成員可以直接訪問它們,但是在類外
6、部通過派生類的對象無法訪問?;惖膒rivate成員在私有派生類中是不可直接訪問的,所以無論是派生類成員還是通過派生類的對象,都無法直接訪問從基類繼承來的private成員,但是可以通過基類提供的public成員函數(shù)間接訪問。4.1繼承與派生類基類成員private成員public成員protected成員內(nèi)部訪問對象訪問不可訪問不可訪問可訪問不可訪問可訪問不可訪問classfath{public:inta,b;intgetx(){returnX;}intgety(){returnY;}protected:intc,d;private:intX,Y
7、;};說明:classson:privatefath{intW,H;pubulic:voidlarge();}};等價于classson//{public://voidlarge();}protected:private://intW,H;inta,b;intgetx(){returnX;}intgety(){returnY;}intc,d;fatherprivate:intX,Y;};son:son1;son1可以訪問large()son1.large可以訪問除了X、Y以外的任何成員4.1繼承與派生類例4.1一個私有繼承的例子#include"i
8、ostream.h"classx{inta;public:x(){a=12;}intget(){returna;}void