C教程第章继承与派生.docVIP

  • 4
  • 0
  • 约2.52万字
  • 约 29页
  • 2017-02-04 发布于北京
  • 举报
C教程第章继承与派生

第8章 继承与派生 8-1. 教学目的与要求 1.理解继承的概念; 2.掌握继承的实现方法; 3.继承中常见问题的处理方法。 8-2. 主要内容及重点: 类是C++中进行数据封装的逻辑单位。继承是面向对象程序设计的一个重要特征之一,它允许在既有类的基础上创建新的类,新类可以从一个或多个既有类中继承操作和数据,而且可以重新定义或加进新的数据和操作,从而形成类的层次或等级。既有类称为基类或父类,在它基础上建立的新类称为派生类、导出类或子类。 本章的重点是派生类的定义和使用、创建派生类对象时构造函数的调用顺序、多重继承中的冲突及其消除方法以及作用域运算符的几种使用方法等。 本章的难点是基类的初始化、多重继承中的冲突以及虚基类等。 8-3. 第8章 继承-课件 3-4. 8-4. 第8章 继承-复习总结 继承是面向对象程序设计方法的基本特性之一,继承可以提高软件的重要性。 本章主要介绍了C++中的继承性的实现方法以及在继承性常见问题的处理方法。包括基类的初始化、访问类型的调整、冲突及其消除方法、成员覆盖、赋值兼容性以及虚基类等。 类的派生包括三种类型:私有派生、保护派生、公有派生。利用构造函数的初始化成员列表,可以在派生类中对基类成员进行初始化。在继承层次关系中要避免冲突的产生,通常是采用指定作用域和定义虚基类这两种方法来解决问题。 8-5. 第8章 继承-练习 8-5-1.思考题: 1).派生类有几种方式,每种方式中派生类对基类成员的继承如何? 2). 在创建派生类对象时,构造函数的执行次序是怎样的?析构函数的执行次序是怎样的? 3). 派生类对象如何对基类中的成员进行初始化? 4). 在多重继承中,在什么情况下会产生冲突?如何消除冲突? 5). 列举我们已学习的作用域运算符“::”的所有用途。 6). 属于不同类的对象在什么情况下可以互相赋值? 7).什么叫虚基类?为什么要引进虚基类? 8-5-2.练习题: 课后练习题见练习单元。 第8章 继承与派生 类是C++中进行数据封装的逻辑单位。继承是面向对象程序设计的一个重要特征之一,它允许在既有类的基础上创建新的类,新类可以从一个或多个既有类中继承操作和数据,而且可以重新定义或加进新的数据和操作,从而形成类的层次或等级。既有类称为基类或父类,在它基础上建立的新类称为派生类、导出类或子类。 8.1 继承与派生的基本概念 8.1.1单继承和多继承: 单继承:一个类继承一个一般类特性的继承称为单继承。 多继承:一个类可以继承多个一般类的特性,然后再在继承来的这些一般类的基础上增加自己的特殊性,这种继承方式称为多继承。 如:一个助教博士,他既是一个学生,又是一个老师,如果从学生类和老师类两个一般类继承特性,则助教博士类可以获得这两个类的特性,因而能进一步增强开发效率。 单继承是所有面向对象程序设计语言都具有的功能,但并不是所有的语言都支持多继承,这是由多继承实现的复杂性决定的。C++语言支持多继承。 8.1.2基类和派生类: 在定义类B时,如果它使用了一个已定义的类A的部分或全部成员,则称类B继承了A,或由类A派生出类B。并称类A为基类或父类,类B为派生类或子类。 一个派生类又可以作为另一个类的基类,这样一个基类可以直接或间接派生出若干个派生类,构成树状的继承关系。 但是注意:继承关系不可循环。如:A继承B,B继承,C又继承A,这是非法的。 例类Y继承类X的特性,类Z又继承类Y的特性,从而间接继承来类X的特性。因而类X是类Y的直接基类,是类Z的间接基类,类Y是类X的直接派生类,类Z是类X的间接派生类。类X、Y、Z形成了一个类层次。 如前图. 8.1.3 两个类之间要具有继承关系,它们通常满足: 1)有共同的属性或操作。 2)有细微的差别。 8. 2 派生类说明及其构造函数和析构函数 8.2.1 派生类的说明 从一个基类派生出子类的一般格式为; class 派生类名:Access派生方式或访问属性基类名 { … //类体,派生类新增的数据成员和成员函数 } ; 其中: 1) class 是类定义的关键字,用于告诉编译器下面定义的是一个类。 2)派生类名是新定义的类名。 3)访问属性是访问说明符,可以是private、public、protected之一。此项的默认值为private,派生类名和访问属性之间用冒号隔开。派生类的访问控制由访问属性来确定,它按下述方式来继承基类的访问属性。 ①.公有派生 如果访问属性是为public,则基类的

文档评论(0)

1亿VIP精品文档

相关文档