- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
继承与多重继承
第15章 繼承與多重繼承 15-1 繼承的基礎 15-2 覆寫與隱藏父類別的成員 15-3 子類別的建構與解構子 15-4 多重繼承 15-5 軟體工程與繼承 15-6 類別的型態轉換與檢查 15-1 繼承的基礎 15-1-1 類別繼承的基礎 15-1-2 實作繼承 15-1-3 父類別的存取控制 15-1-1 類別繼承的基礎-圖例 「繼承」(Inheritance)是物件導向程式設計的一種進階觀念,繼承就是物件的再利用,當定義好一個類別後,其他類別可以繼承這個類別的成員資料和函數。 類別繼承也是在模擬真實世界,例如:學生和老師都是人,我們可以先定義Person類別來模擬人類,然後擴充Person類別建立Student類別來模擬學生,如右圖所示: 15-1-1 類別繼承的基礎-圖例說明 Person類別是Student類別的「父類別」(Superclass)或「基礎類別」(Base Class),反之Student類別是Person類別的「子類別」(Subclass)或「延伸類別」(Derived Class)。 UML類別圖的繼承是使用空心的箭頭線來標示兩個類別間的關係。 15-1-1 類別繼承的基礎-類別架構 繼承不只可以多個子類別繼承同一個父類別,還可以擁有很多層的繼承,如果將整個類別關聯性(Relationships)的樹狀結構都繪出來,稱為「類別架構」(Class Hierarchy),如下圖所示: 15-1-1 類別繼承的基礎-兄弟類別 Truck、Car和Motorcycle類別是「兄弟類別」(Sibling Classes),因為擁有相同Vehicle父類別。當然我們可以繼續繼承類別Car,類別SportsCar和Jeep也是類別Vehicle的子類別,不過並不是直接繼承的子類別。 簡單的說,Car類別是SportsCar和Jeep的直接父類別(Direct Base Class),Vehicle類別則是SportsCar和Jeep的間接父類別(Indirect Base Class)。 15-1-2 實作繼承-父類別的宣告 父類別vehicle定義車輛的基本資料,如下所示: class vehicle { private: int engineNo; string owner; public: void setNumber(int no) { engineNo = no; } void setOwner(string owner) { this-owner = owner; } void printVehicle() { } }; 15-1-2 實作繼承-子類別的宣告(語法) 類別如果是繼承自存在的其他類別,其宣告語法,如下所示: class 子類別名稱 : 存取修飾子 父類別名稱 { // 擴充的成員資料和函數 }; 上述類別宣告使用「:」運算子後跟著父類別,表示擴充父類別的宣告,在父類別前方的存取修飾子可以定義繼承父類別的存取範圍,其值可以是private、protected和public,詳細說明請參閱下一節。 15-1-2 實作繼承-子類別的宣告(範例) 因為車輛可以分成很多種,例如:卡車、機車和轎車等,以轎車car子類別為例的類別宣告,如下所示: class car : public vehicle { private: int doors; public: car(string owner, int no, int doors) { } void printCar() { } }; 15-1-2 實作繼承-UML類別圖 UML類別圖,如下圖所示: 15-1-2 實作繼承-繼承的成員種類 在C++語言宣告的子類別可以繼承父類別的所有成員資料和函數,但是並不包含: 父類別的建構子和解構子。 父類別的朋友關係。 父類別的指定運算子=。 15-1-3 父類別的存取控制-說明 在C++語言的子類別使用哪一種存取控制來繼承父類別,將影響成員的存取範圍,如下所示: 父類別名稱 { private: …… protected: …… public: …… }; class 子類別名稱 : 存取修飾子 父類別名稱 { …… }; 15-1-3 父類別的存取控制-父類別的存取控制 在子類別是使用存取修飾子private、protected和public來繼承父類別。父類別各種存取控制的說明,如下表所示: 15-1-3 父類別的存取控制-子類別的存取控制 子類別是否能夠存取父類別指定區塊的成員函數和資料,需視它屬於類別的public、protected和private成員而定,筆者整理如下表所示: 15-2 覆寫與隱藏父類別的成
文档评论(0)