[工学]C++ 第五章 继承与派生.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]C第五章继承与派生

类成员 再看类对象成员 class A{ …. }; class B{ A obj;//obj做为B类的成员对象 …. }; 整体-部分结构 类对象成员反映的正是整体-部分结构,也称has-a关系。对于上例,即B has-a A。 第五章 继承与派生 本节重点 继承与派生的概念 派生类的声明方式 派生类的构成 派生类成员的访问属性 5.1 继承与派生 一个新类从已有类那里获得已有特性,这种现象称为类的继承。 从已有的类(父类)产生一个新的子类,称为类的派生。 轿车、卡车、越野车与汽车之间表现的就是一种继承关系。在面向对象方法中,通常用A is-a B 表达A 是B的派生类,或者说B是父类,A是B的子类。 继承的作用 继承是面向对象程序设计的基本特征之一,其作用有: 在已有类的基础上构造新类或新类型; 支持代码重用,加快程序开发效率; 提高程序可靠性。程序员构造的新类很多都是在已开发的质量可靠的基类上发展而来。 基类和派生类 称已存在的用来派生新类的类为基类,又称为父类。 由已存在的类派生出的新类称为派生类,又称为子类。 在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。图7-1反映了类之间继承和派生关系。 类之间继承和派生关系 5.2 派生类的声明方式 声明派生类的一般形式: class 派生类名: [继承方式] 基类名 { 派生类新增成员声明 } ; 其中 派生类名是新定义的一个类的名字,它是从基类名中派生的,并且按指定的继承方式派生的。 继承方式包括: public:公有 private:私有继承,可默认声明; protected:保护继承。 例:假定已经声明一个基类student,在它基础上通过单继承建立一个派生类student1: class Student1: public Student { private: string addr; public: void display_1() { cout address: addrendl;} } ; 5.3 派生类的构成 派生类中的成员包括从基类继承过来的成员和自己增加的成员。继承基类成员体现了同一基类的派生类都具有的共性,而新增加的成员体现了派生类的个性。 构造派生类要做的工作 (1)从基类接收成员。 派生类将基类除构造函数和析构函数外的所有成员接收过来。 (2)调整从基类接收的成员 一方面可以通过继承方式改变基类成员在派生类中的访问属性 另一方面可以在派生类中声明一个与基类成员同名的成员屏蔽基类的同名成员,注意如是成员函数不仅要函数名相同,而且函数的参数也要相同,屏蔽的含义是用新成员取代旧成员。 构造派生类包含的工作 (3)声明派生类时增加成员,它体现了派生类对基类功能的扩充。 (4)在声明派生类时,还要自己定义派生类的构造函数。 5.4 派生类成员的访问属性 派生类中包含了基类成员和派生类成员,就产生了这两部分成员的关系和访问属性的问题。这个关系由基类成员的访问属性和派生类的继承方式组合决定。 例5-1 //基类的声明 class Parent{ public: int pub_value; void pub_func(){} private: int pri_value; void pri_func(){} protected: int pro_value; }; 派生类对基类成员的访问 思考: 例5-2中基类parent类的属性在派生类child类中是否继续有效?如parent类中的pub_value属性是否是child类的属性?如果是,是公有成员还是私有成员?对于其他属性和函数呢? 派生类的三种继承方式 派生类的三种继承方式 1. 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。 2. 私有继承(private) 私有继承的特点是基类的公有成员和保护成员作为派生类的私有成员,并且不能被这个派生类的子类访问。 3. 保护继承(protected) 保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。 5.4.1 公用继承 当派生类的继承方式为public(公有)属性 在派生类中基类的公有成员和保护成员在派生类中的访问属性没有变化,派生类的成员可以直接访问它们。 但是,

文档评论(0)

skvdnd51 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档