欢迎来到天天文库
浏览记录
ID:48787882
大小:158.50 KB
页数:21页
时间:2020-01-24
《C++类别的继承(Class.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、物件導向的三大特性:資料封裝、複載(同名異式)、繼承。隨著時間與使用者環境的影響,舊定的類別資料型態將無法符合使用者的需求,利用物件導向中繼承的特性可將舊有的類別加以擴充為目前所需的狀態,而不必更動原來的datamember及memberfunction。繼承類別內的資料成員與成員函式具有重複使用的特性。被繼承的類別稱為基礎類別(Baseclass)或父類別,而經由繼承關係所定義出之類別為衍生類別(Derivedclass)或子類別。利用舊有的資料型態定義出新的資料型態,在這新的資料型態中不但有新的資料成員及成員函式,同時也擁有舊資料型態的全部資料成員
2、及成員函式,就好像真實世界中繼承者可以擁有被繼承者所留下的全部東西及使用方法。類別繼承是從一基礎類別繼承其特性,包括資料和運作方式,變成一新類別。程式師對繼承而來的新類別可作下列更動從既存類別中加入新函數。例:繼承一個矩型類別並加入一新函數求其對角線從既存類別中加入新資料。例如,繼承一String類別,並在類別中加入顏色資料成員,使字串顯示時能包含顏色。在新類別中修改既存類別之運作方式。類別繼承不須取用原始程碼,因此,如果購買的類別庫只包含標題檔及類別的目的檔我們仍可繼承到新類別繼續發展。C++類別的繼承(ClassInheriance)Class衍生
3、類別型態名稱:publicprivaite基礎類別型態名稱{...}繼承的寫法繼承方式classshape{protected:intx,y;//中心點public:voiddraw(){….}}s1;classcircle:publicshape{private:intradius;public:voiddraw(){…}}c1;voidmain(){…}Classemployee{private:charname[20];unsignedlongnumber;public:voidgetdata(){cout<<“Name:”;cin>>nam
4、e;cout<<“Number;”;cin>>number;}voidputdata(){cout<<“Name:”<5、…}protected:intb;voidfunc2(){…}public:intc;voidfunc3(){…}};voidmain(){…}私有區data及function僅供自己類別內存取保護區data及function僅供自己類別內及繼承之兒子存取公用區data及function供所有敘述及函數存取voidfunc1(){a=2;}voidfunc2(){a=3;func1();}voidfunc3(){a=3;func1();}voidfunc2(){b=2;}voidfunc3(){a=3;func1();}voidmain(){a=6、2;func1();}voidmain(){b=2;}voidfunc3(){c=3;func1();}voidmain(){basebs1;bs1.c=3;bs1.func3();}voidmain(){basebs1;c=2;func3();}基礎類別中的保護等級ClassBase{private:inta;voidfunc1(){…}protected:intb;voidfunc2(){…}public:intc;voidfunc3(){…}}b1;classDrbase:publicbase{private:intd;void7、func4(){…}protected:inte;func5(){…}public:intf;func6(){…}};私有區data及function僅供自己類別內存取保護區data及function僅供自己類別內及繼承之兒子存取公用區data及function供所有敘述及函數存取以public方式繼承,可分別繼承基礎類別protected及public區之datamember及memberfunction到自己protected及public區繼承但無法直接取用:public:inta;intc;//繼程而得voidfunc1(){…}intf;//8、原有private:voidfunc3(){…}//繼程而得intd;//原有voidfunc
5、…}protected:intb;voidfunc2(){…}public:intc;voidfunc3(){…}};voidmain(){…}私有區data及function僅供自己類別內存取保護區data及function僅供自己類別內及繼承之兒子存取公用區data及function供所有敘述及函數存取voidfunc1(){a=2;}voidfunc2(){a=3;func1();}voidfunc3(){a=3;func1();}voidfunc2(){b=2;}voidfunc3(){a=3;func1();}voidmain(){a=
6、2;func1();}voidmain(){b=2;}voidfunc3(){c=3;func1();}voidmain(){basebs1;bs1.c=3;bs1.func3();}voidmain(){basebs1;c=2;func3();}基礎類別中的保護等級ClassBase{private:inta;voidfunc1(){…}protected:intb;voidfunc2(){…}public:intc;voidfunc3(){…}}b1;classDrbase:publicbase{private:intd;void
7、func4(){…}protected:inte;func5(){…}public:intf;func6(){…}};私有區data及function僅供自己類別內存取保護區data及function僅供自己類別內及繼承之兒子存取公用區data及function供所有敘述及函數存取以public方式繼承,可分別繼承基礎類別protected及public區之datamember及memberfunction到自己protected及public區繼承但無法直接取用:public:inta;intc;//繼程而得voidfunc1(){…}intf;//
8、原有private:voidfunc3(){…}//繼程而得intd;//原有voidfunc
此文档下载收益归作者所有