- 1、本文档共58页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
继承类别
11 繼承類別 11.1 繼承概論 11-2 11.1.1 基礎類別與衍生類別 11-2 11.1.2 繼承型式 11-2 11.1.3 保護成員 11-2 11.2 單一類別繼承 11-3 11.2.1 公用型態的繼承 11-3 11.2.2 私用型態的繼承 11-7 11.2.3 保護型態的繼承 11-10 11.3 多重類別繼承 11-12 11.3.1 多層類別繼承 11-12 11.3.2 多重類別繼承 11-16 11.4 建立者與破壞者 11-19 11.4.1 單一建立者與破壞者 11-20 11.4.2 多層建立者與破壞者 11-21 11.4.3 多重建立者與破壞者 11-22 11.4.4 傳遞參數到基礎建立者 11-24 11.5 繼承與包含 11-26 11.5.1 繼承類別 11-26 11.5.2 包含類別 11-28 11.1 繼承概論 繼承(inheritance)的功能讓程式可以重複使用。例如,建立新類別時,使用繼承功能去吸收已存在類別的特性與功能到新類別中,如此可以節省許多程式開發的時間,所以繼承是處理複雜程式很有效率的技術。 11.1.1 基礎類別與衍生類別 當建立新類別時,使用繼承功能去繼承已存在類別的資料成員與成員函數,來取代重新撰寫新的資料成員與新的成員函數。 這已存在的類別稱為基礎類別(base class)或父類別(parent class),而新建立的類別稱為衍生類別(derived class)或子類別(child class)。 在衍生類別中可以新增自己的資料成員與成員函數,將來衍生類別也可能成為新建類別的基礎類別。 11.1.2 繼承型式 C++ 提供公用(public)、私用(private)與保護(protected)三種繼承型式。 在public繼承型式中,衍生類別只能存取基礎類別中public與protected的成員,而不能直接存取基礎類別中private的成員,但可透過基礎類別中public與protected的成員函數間接存取基礎類別的private成員。 11.1.3 保護成員 存取基礎類別的protected 成員的,則是介於存取public與private成員之間,基礎類別的protected成員可被基礎類別與衍生類別的成員函數與friend函數所存取。 所以對於衍生類別的成員函數而言,可以直接使用public與protected成員名稱存取該資料成員。 而對於其他類別(非衍生類別)的成員函數而言,則不可直接存取protected與private資料成員,必須透過public成員函數來存取protected與private資料成員。 11.2 單一類別繼承 11.2.1 公用型態的繼承 11.2.1 公用型態的繼承 (續) 建立基礎類別 class Base { int a, b; public: void set(int n, int m) {a = n; b = m;} void show() {cout a b endl;} }; 11.2.1 公用型態的繼承 (續) 建立衍生類別 class Derived: public Base { int c; public: Derived() {c = 0;} Derived(int n) {c = n;} void setc() {c = a * b;} //錯誤!不可直接存取a, b void showc() {cout c;} }; 11.2.1 公用型態的繼承 (續) Derived物件可以呼叫Base與Derived類別的public函數 int main() { Derived d(10); //c = 10 d.set(2,3); //a=2, b=3 d.show(); //顯示2與3 d.showc(); //顯示10 } 11.2.2 私用型態的繼承 11.2.2 私用型態的繼承 (續) 建立Base類別 class Base { protected: int a, b; public: void set(int n, int m) {a = n; b = m;} void show() {cout a b endl;} }; 11.2.2 私用型態的繼承 (續) Derived類別是以private型態繼承Base類別 class Derived: private Base { protected: int c; public: Derived(int n
文档评论(0)