- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
92继承:基本类别与衍生类别public
第九章 Inheritance(繼承) 9.1 簡介 繼承(Inheritance) 從現存類別來建立新的類別 將現存類別的屬性與行為繼承過來,某部份可加以修改 Derived class(衍生類別、繼承別人的類別) 從基本類別(被繼承的類別)繼承資料成員與成員函式的類別。 單一繼承(Single inheritance) 只從一個基本類別繼承的類別 多重繼承(Multiple inheritance) 從很多個基本類別繼承的類別 繼承的種類:public、protected、private 這一章中主要使用 public 繼承,也就是每個衍生類別的物件都可以看作基本類別的物件。 9.1 簡介 Polymorphism(多型、第十章) 用一般化的方式寫程式 相關的類別都可以用同一種方式來處理 多介紹一種類別的成員存取方式,除了 private 與 public 外,又多了 protected。 衍生類別可以存取基本類別的 protected 成員,但不能存取 private 成員。 很多軟體公司提供類別庫,程式設計者寫程式時,可以直接從這些標準化的、可再使用的元件直接繼承過來,與硬體的建構方式類似。 9.2 繼承:基本類別與衍生類別 基本類別與衍生類別 通常衍生類別(子類別)的物件也算為基本類別的物件 矩形類別可當作四邊形類別的衍生類別,矩形也是四邊形、但四邊形未必是矩形 繼承的範例 9.2 繼承:基本類別與衍生類別 9.2 繼承:基本類別與衍生類別 public 繼承的實作方式 class CommissionWorker : public Employee { ...}; 類別 CommissionWorker 從 Employee 繼承 friend 函式沒有被繼承 基本類別的 private 成員不能被衍生類別存取 這是 public 繼承,是最普通的繼承方式 基本類別的 public 與 protected 成員都會被繼承為衍生類別的 public 與 protected 成員。 衍生類別的物件可以視為基本類別的物件,但基本類別的物件不可視為衍生類別的物件 9.3 protected 成員 基本類別的 public 成員可被程式中任何函式存取,基本類別的 private 成員只能被基本類別的成員函式或friends存取。 protected 存取方式 被保護的程度介於 public 與 private 存取方式之間 衍生類別成員只要使用成員名稱就可存取基本類別的 public 與 protected 成員。 注意 protected 資料會破壞封裝,當基本類別的 protected 成員有改變時,所有的衍生類別都要跟著改變。 9.4衍生類別與基本類別的關係 Example: Point/circle inheritance hierarchy Point x-y coordinate pair Circle x-y coordinate pair Radius 1 // Fig.?9.4: point.h 6 class Point { 8 public: 9 Point( int = 0, int = 0 ); 11 void setX( int ); 12 int getX() const; 14 void setY( int ); 15 int getY() const; 17 void print() const; 19 private: 20 int x; 21 int y; 23 }; 18 void Point::setX( int xValue ) { 20 x = xValue; } 25 int Point::getX() const { 27 return x; 29 } 30 32 void Point::setY( int yValue ) { 34 y = yValue; 36 } 37 39 int Point::getY() const { 41 return y; 43 } 46 void Point::print() const { 48 cout [ x , y ]; 50 }
您可能关注的文档
最近下载
- 张思德革命英雄人物故事PPT课件(图文演讲).pptx
- 多媒体技术与应用教程(全套课件91P).pptx VIP
- 肖维青中国文化英语综合教程.pdf VIP
- Unit 1 School things(大单元教学解读)三年级英语下册(译林版三起2024).pdf
- 五年级美术下册课件-5景物的近大远小(7)-冀美版.ppt
- 消防员的体能训练与技战术训练课件.pptx VIP
- 2024《财务共享服务中心的运营现状及优化策略研究-以鞍钢集团为例》14000字.docx
- 2024-2025学年九年级语文期末模拟考试卷期末模拟卷(安徽专用,范围:上册+下册).pdf VIP
- 1金正日の料理人.pdf
- 新《特种设备生产和充装单位许可规则》--气瓶充装许可部分.doc
文档评论(0)