- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程式设计参考书目:1
* 類別繼承的存取模式 下圖說明類別繼承的存取模式 Practice 2 參考課本 16-33 習題 11 * Practice 3 (1) 汽車繼承練習 一個汽車的基本類別如下 class car { protected: int num_doors; public: car(); car(int d): num_doors(d) {} }; 其中 car() 為預設汽車為 4 門房車,car(int d) 可填入房車門數 * Practice 3 (2) 兩個繼承的類別 Mercedes 為 4 門房車,增加一個 private data 為汽車價格,增加一個 public function 為輸出汽車相關資料(車門數、價格) TIIDA 為 4 或5 門房車,需要透過car(int d): num_doors(d) {} 來設定。增加一個 private data 為汽車價格,增加一個 public function 為輸出汽車相關資料(車門數、價格) 主程式有兩個物件,分別為 Mercedes 及 TIIDA 車種,其中TIIDA 車物件需要輸入門數。呼叫相關函數以輸出汽車之資料。 * * 多載與改寫 「多載」是函數名稱相同,在不同的場合可做不同的事 「改寫」是在子類別裡定義與父類別名稱相同的函數,用來覆蓋父類別裡函數功能的一種技術 * 改寫的範例 (1/2) 簡單的改寫範例 * 改寫的範例 (2/2) * 「改寫」與「多載」的比較 「多載」:英文名稱為overloading 它是在相同類別內,定義名稱相同,但引數個數或型態不同的函數,C++可依據引數的個數或型態,呼叫相對應的函數 「改寫」:英文名稱為overriding 它是在子類別當中,定義名稱、引數個數與型態均與父類別相同的函數,用以改寫父類別裡函數的功用 Practice 4 參考 Practice 1 試在父類別 Caaa 加入一個 display() 函數,可以顯示 “Printed from Caaa class” 在子類別加入 display() 函數,用來改寫父類別之函數,顯示 “Printed from Cbbb class” 在主程式 main() 中宣告 Caaa 物件 obj1,Cbbb 物件 obj2,利用這兩個物件呼叫 display() 函數。 * * 錯誤的使用拷貝建構元 (1/6) 如果父類別或子類別裡沒有提供拷貝建構元的話,編譯器會提供一個預設的拷貝建構元 下面是一個因沒有撰寫拷貝建構元而發生錯誤的例子 * 錯誤的使用拷貝建構元 (2/6) * 錯誤的使用拷貝建構元 (3/6) * 錯誤的使用拷貝建構元 (4/6) * 錯誤的使用拷貝建構元 (5/6) 下圖為執行完60行後的結果 下圖為執行完61行後的結果 * 錯誤的使用拷貝建構元 (6/6) 要解上面的錯誤,只要在子類別內加上一個拷貝建構元 * 修正錯誤 (1/5) 下面的程式是修正沒有撰寫拷貝建構元的錯誤 * 修正錯誤 (2/5) * 修正錯誤 (3/5) * 修正錯誤 (4/5) * 修正錯誤 (5/5) 下圖為執行47與53行後之結果 * 建構元與解構元的呼叫時機 建立物件時,父類別的建構元會先被執行,然後再執行子類別的建構元 銷毀物件時,子類別的解構元會先被執行,然後再執行父類別的解構元 物件導向程式設計參考書目:1. 洪維恩,C++ 教學手冊 第三版,旗標出版圖書公司。2. 陳錦揮,Java 初學指引,博碩文化3. 施威銘研究室著,最新 Java 2 程式語言 第 2 版,旗標出版社。1.由 C++ 進入 Java 程式語言(I): C++ 之類別繼承 Chih-Hung Wang * * 基底類別與衍生類別 (1/2) 以既有類別為基礎,進而衍生出另一類別,稱為「類別的繼承」(inheritance of classes) 原有的類別稱為「父類別」(super class)或「基底類別」(basis class) 因繼承而產生的新類別則稱為「子類別(sub class)或「衍生類別」(derived class) * 類別成員繼承的關係 基底類別與衍生類別 (2/2) * 簡單的繼承範例 (1/6) 類別繼承的格式 * 簡單的繼承範例 (2/6) 下面的範例簡單說明繼承的使用方法 * 簡單的繼承範例 (3/6) 下圖是本例中,父類別與子類別所佔記憶體之比較 * 簡單的繼承範例 (4/6) * 本例的繼承關係圖繪製如下 簡單的繼承範例 (5/6) * 簡單的繼承範例 (6/6) 由前一個範例可學到下列幾點重要的觀念 透過類別的繼承,可將父類別的成員繼承給子類別 在執行子類
文档评论(0)