資源描述:
《派生類與繼承》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第5章派生類與繼承5.1繼承(Inheritance)的概念:一個類的數(shù)據(jù)成員和成員函數(shù),有些是類本身自己定義的,有一些是可繼承的或通過模板生成的。所謂繼承就是利用已有的數(shù)據(jù)類型定義出新的數(shù)據(jù)類型。該機制自動地為一個類提供來自另一個類的操作和數(shù)據(jù)結(jié)構(gòu),程序員只需在新類中定義已有類中沒有的成分來建立新類。利用類的“繼承”,就可以將使原來的程序代碼重用,從而減少了程序代碼的冗余度,符合軟件重用的目標(biāo)。所以說,繼承是面向?qū)ο蟪绦蛟O(shè)計的一個重要機制。另外,在C++中擴充派生類成員的方法是非常靈活的。本章
2、重點與難點:繼承的概念和不同形式的派生繼承對成員訪問屬性的影響.多重繼承的虛基類概念.classperson{protected:charname[10];intage;charsex;public:voidprint();};classemployee{protected:charname[10];intage;charsex;chardepartment[20];floatsalary;public:voidprint();};派生類不僅可以繼承原來類的成員,還可以通過以下方式產(chǎn)生新的成員:
3、(1)增加新的數(shù)據(jù)成員;(2)增加新的成員函數(shù);(3)重新定義已有成員函數(shù);(5)改變現(xiàn)有成員的屬性。在繼承關(guān)系中,稱被繼承的類為基類(baseclass)(或父類),而把通過繼承關(guān)系定義出來的新類稱為派生類(derivedclass)(子類)。由此可見,派生類既可以對基類的性質(zhì)進行擴展,又可以進行限制,從而得到更加靈活、更加適用的可重用模塊,大大縮短軟件的開發(fā)時間。5.2繼承的工作方式:它是從一個基類(父類)派生的繼承1.派生類的聲明形式為:class派生類名:繼承方式基類名{派生類中的新成員
4、}其中:(1)派生類名由用戶自己命名;(2)繼承方式也稱訪問方式,可以為public、protected和private,默認(rèn)為private方式。繼承方式為public方式時,這種繼承稱為公有繼承;繼承方式為protected方式時,稱為保護繼承;private方式時,稱為私有繼承;(3)基類名必須是程序中一個已有的類。ACB父類子類注:(1)單繼承(4)在冒號“:”后的部分告訴系統(tǒng),這個派生類是從哪個基類派生的,以及在派生時的繼承方式。(5)大括號內(nèi)的部分是派生類中新定義的成員。例如://已
5、定義一個基類classperson{private:charname[10];intage;charsex;public://….};//定義一個派生類classemployer:publicperson{private:chardepartment[20];floatsalary;public://….};2.基類成員在派生類中的訪問屬性(1)派生類不僅擁有屬于自己的數(shù)據(jù)成員與成員函數(shù),還有從基類繼承來的數(shù)據(jù)成員與成員函數(shù);同時派生類可對一些繼承來的函數(shù)重新定義,以適應(yīng)新的要求。(2)C++關(guān)
6、于類的繼承方式的規(guī)定,如下表5.1所示:①按private方式繼承(即私有繼承)時,基類中的公有成員和保護成員在派生類中皆變?yōu)樗接谐蓡T。②按public方式繼承(即公有繼承)時,基類中的公有成員和保護成員在派生類中不變。不管按什么方式繼承,基類中的私有成員均不能被派生類訪問.基類公有派生類私有派生類保護派生類public成員public成員private成員protected成員protected成員protected成員private成員protected成員private成員無法訪問無法訪問
7、無法訪問3.基類成員在派生類中的訪問規(guī)則派生類對基類成員的訪問形式主要有以下兩種:(1)內(nèi)部訪問:由派生類中新增成員對基類繼承來的成員的訪問.(2)對象訪問:在派生類外部,通過派生類的對象對從基類繼承來的成員的訪問.①按private方式繼承(即私有繼承)時,基類中的公有成員和保護成員在派生類中皆變?yōu)樗接谐蓡T。派生類的其他成員可以直接訪問它們,但在類外部通過派生類的對象無法訪問.ex5_1ex5_2因此,基類成員在私有繼承時,只能內(nèi)部訪問原來的公有成員和保護成員②按public方式繼承(即公有繼
8、承)時,基類中的公有成員和保護成員在派生類中訪問屬性不變。但類的外部使用者只能通過派生類的對象訪問繼承來的公有成員.ex5_3③保護繼承的訪問規(guī)則由于基類的公有成員和保護成員都成為派生類的保護成員,因此派生類的其它成員都可以直接訪問它們,但類的外部使用者不能通過派生類的對象來訪問它們.ex5_4/ex5_1私有繼承#includeclassbase{intx;public:voidsetx(intn){x=n;}intshowx(){returnx;}};classder