- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 派生类继承
面向对象程序设计技术 第4章 派生类与继承 4.1 继承与派生类 4.1.1 为什么要使用继承 重用:通过继承机制,利用已有的类来定义新类,新的类不仅可以有新的成员,还拥有从已有的类继承来的成员。 已有的类称为基类或父类,新的类称为派生类或子类。 如果派生类从一个基类派生的,称这种继承为单继承;如果派生类从多个基类派生的,称这种继承为多继承。 4.1 继承与派生类 4.1.2 派生类的声明 如果不采用派生类方法 class person { protected: char name[10]; int age; char sex; public: void print(); }; 4.1 继承与派生类 改写 //定义一个基类 class person{ protected: char name[10]; int age; char sex; public: //…… }; //定义一个派生类 class employee: public person { protected: char department[20]; float salary; public: //…… }; 4.1 继承与派生类 声明一个派生类的一般格式为: class 派生类名 : 继承方式 基类名 { 派生类新定义成员 } ; 其中,继承方式有3种:public(公有派生)、private(私有派生,缺省情况下也如此)、protected(保护派生)。 4.1 继承与派生类 由类person继承出类employee可以采用下面的三种格式之一: (1) 公有继承 class employee:public person{ //… }; (2) 私有继承 class employee:private person{ //… }; (3) 保护继承 class employee:protected person{ //… }; 4.1 继承与派生类 派生类的变异功能 从已有类派生出新类时,可以在派生类内完成以下几种功能: (1) 可以增加新的数据成员; (2) 可以增加新的成员函数; (3) 可以重新定义基类中已有的成员函数; (4) 可以改变现有成员的属性。 4.1 继承与派生类 4.1.4 派生类对基类成员的访问规则 派生类对基类成员的访问形式主要有以下两种: (1) 内部访问: 由派生类中新增成员对基类继承来的成员的访问。 (2) 对象访问: 在派生类外部,通过派生类的对象对从基类继承来的成员的访问。 4.1 继承与派生类 私有继承的访问规则 基类的public成员和protected成员被继承后作为派生类的private成员,派生类的其他成员可以直接访问它们,但是在类外部通过派生类的对象无法访问。 基类的private成员在私有派生类中是不可直接访问的,所以无论是派生类成员还是通过派生类的对象,都无法直接访问从基类继承来的private成员,但是可以通过基类提供的public成员函数间接访问。 4.1 继承与派生类 例4.1一个私有继承的例子 #include iostream.h class x { int a ; public: x(){a=12;} int get(){return a;} void print(){ cout a endl;} }; class y:x //私有继承 { int b; //…… 4.1 继承与派生类 public : void make(){ b=get()+10;} //调用了基类的成员 void print() { x::print(); cout b endl; } }; void main() { x x1; class y y1;
文档评论(0)