第十章继承、虚函数和多态性.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 继承、虚函数和多态性 继承基础知识 基类访问控制 使用保护成员 调用基类构造函数 构造多层次结构 多基类的派生类 构造函数与析构函数调用顺序 派生类指针 虚拟函数与多态性 纯虚拟函数与抽象类 本章主要内容 1 17 2 17 10.1 继承基础 继承、虚函数和多态性是C++面向对象编程的特征。继承允许一个类继承另一个类的特征。使用继承就可以创建一个普通类,它定义一组相关对象的共有特征。这个类然后可以由另一个更为具体的类继承,每个类都可以增加自己所独有的元素。虚函数建立在继承基础上。虚函数支持多态性,即“一个接口多种方法”的面向对象编程原则。 在C++中被继承的类叫做基类(base class)。继承基类的类就是派生类(derived class)。因此,派生类就是基类的具体版本。派生类继承基类定义的所有成员并添加自己的独特元素。C++通过允许一个类将另一个类合并到其声明中来实现继承。具体方法就是:在声明派生类时,指定基类。 Chapter 10 Exm1 作为派生类的基类并意味着不能使用基类本身。 Chapter 10 Exm2 3 17 成员访问和继承 继承的普通形式如下: 访问属性access可以省略,否则只能为public,private和protected。不写的话 继承的重要优点就是,一旦创建了定义一组对象所共有属性的基类,就可以使用它创建任意数量的更为具体的派生类。每个派生类都可以精确地定义自己的特征。 为private。使用public就意味着基类的所有公有成员都是派生类的公有成员。 Chapter 10 Exm2 第8章中讲到经常将类成员声明为私有是为了防止未经授权的访问或修改。继承类并不能撤消私有访问权限限制。因此,即使派生类包括了基类的所有成员,它也不能访问基类中的那些私有成员。 Chapter 10 Exm3 10.2 基类访问控制 4 17 虽然派生类不能访问基类私有成员,但是C++提供了多种解决方案。其中一个方案就是使用受保护成员。第二个方案就是使用公有函数对私有数据进行访问。通常C++程序员允许通过函数对类的私有成员进行访问。提供访问私有数据权限的函数就是存取函数(access function)。 Chapter 10 Exm4 如果一个类继承另一个类,基类成员就成了派生类的成员。不过,在派生类内部是否能访问基类成员是由访问说明符确定的。继承基类时会指定访问说明符,基类访问说明符必须是public,private或protected。如果不使用访问说明符,而且派生类是class,默认情况下就是private。如果派生类是struct,那么默认值就是public。如果基类以public方式被继承,那么基类的所有公有成员都会成为派生类的公有成员。在基类的私有成员保持私有性,派生类的成员不能访问基类的私有成员。 Chapter 10 Exm5 10.3 使用受保护的成员 5 17 与公有继承相反的就是私有继承。如果将基类继承为private,那么基类的所有公有成员都会成为派生类的私有成员。 Chapter 10 Exm6 如果将基类继承为private,那么基类的公有成员就会成为派生类的私有成员,也就是说派生类的成员仍然可以访问它们,但是程序的其他部分则不能访问它们。 可使用protected访问修饰符创建受保护成员。如果将类成员声明为protected,那么该成员就是私有的,只有一个例外。这个例外发生在受保护成员被继承时。在这种情况下,派生类可以访问基类的受保护成员。因此,使用protected,就可以创建这样的类成员:它是私有的,但是派生类仍然可以访问和继承。protected说明符也可以用于结构。 Chapter 10 Exm7 6 17 如果将基类继承为公有的,那么受保护的基类成员就会变成派生类的受保护成员。如果将基类继承为私有,那么基类的受保护成员就会变成派生类的私有成员。 protected访问说明符可以出现在类声明的任何位置,不过它一般出现在声明(默认)私有成员后和声明公有成员之前。 除了为类成员指定受保护的身份外,在继承基类时也可以使用关键词protected作为访问说明符。当以受保护方式继承基类时,基类的所有公有和受保护成员都变成派生类的受保护成员。 10.4 构造函数和继承 使用什么构造函数构建派生类的对象,使用基类中的构造函数还是使用派生类中的构造函数,或使用它们两个?答案就是:基类的构造函数构建对象的基类部分,派生类的构造函数则构建对象的派生类部分。任何一个类都有构造函数,没有定义构造函数的类,C++编译器会自动为其生成默认构造函数。 在实际应用中,绝大多数类都有构造函数。如果只有派生类定义构造函数,那么处理过程就会很简单

文档评论(0)

***** + 关注
实名认证
内容提供者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档