C语言与程序设计大学教程(下)ppt.ppt

上传人:自*** 文档编号:126168614 上传时间:2020-03-22 格式:PPT 页数:280 大小:679.52KB
返回 下载 相关 举报
C语言与程序设计大学教程(下)ppt.ppt_第1页
第1页 / 共280页
C语言与程序设计大学教程(下)ppt.ppt_第2页
第2页 / 共280页
C语言与程序设计大学教程(下)ppt.ppt_第3页
第3页 / 共280页
C语言与程序设计大学教程(下)ppt.ppt_第4页
第4页 / 共280页
C语言与程序设计大学教程(下)ppt.ppt_第5页
第5页 / 共280页
点击查看更多>>
资源描述

《C语言与程序设计大学教程(下)ppt.ppt》由会员分享,可在线阅读,更多相关《C语言与程序设计大学教程(下)ppt.ppt(280页珍藏版)》请在金锄头文库上搜索。

1、太原工业学院计算机工程系 C语言与程序设计大学教程 下 1 太原工业学院计算机工程系 第8章 继承与派生 第9章 关于类和对象的进一步讨论 第10章 运算符重载 第11章 继承与派生 第12章 多态性与虚函数 2 太原工业学院计算机工程系 第8章 继承与派生 教学主要内容 继承与派生的概念 派生类的构成 派生类的构造函数与析构函数 重点与难点 派生类的构成 派生类的构造函数 3 太原工业学院计算机工程系 第8章 继承与派生 教学目标 1 熟练掌握继承与派生的概念 2 掌握派生类的构成 3 掌握派生类的构造函数 4 太原工业学院计算机工程系 第8章 继承与派生 8 1 类的继承与派生 8 2 继

2、承方式与成员访问规则 8 3 派生类的构造函数和析构函数 5 太原工业学院计算机工程系 面向对象技术强调软件的可重用性 software reusability C 语言提供了类的继承机制 解 决了软件重用问题 继承性是面向对象程序设计的一种重要功能 是实现代码复用的一种形式 继承可以使程序 设计人员在一个已存在类的基础上很快建立一个 新的类 而不必从零开始设计新类 新设计类除 具有原来类的属性和方法 还可以为新类添加新 的属性和方法 第8章 继承与派生 6 太原工业学院计算机工程系 在C 中 在已有类的基础上新增自己的 特性而产生新类的过程称为派生 所谓 继承 就 是在一个已存在的类的基础上

3、建立一个新的类 即保持已有类的特性 当一个类被其他的类继承 时 被继承的类称为基类 又称为父类 超类 继承其他类属性和方法的类称为派生类 又称为 子类 继承类 8 1 类的继承与派生 7 太原工业学院计算机工程系 8 1 1 基类与派生类 交通工具 火车 图1 交通根据类的继承关系 汽车 货车客车 小汽车卡车大轿车 小轿车面包车 几何形状 三角形 图2 几何形状类继承关系 圆矩形 8 太原工业学院计算机工程系 8 1 1 基类与派生类 一个派生类不仅可以从一个基类派生 也可以从 多个基类派生 一个派生类有两个或多个基类的 称为多重继承 图3给出了多继承的实例 沙发床 床 图3 多继承中基类和派

4、生类的关系 沙发 番茄 水果蔬菜 9 太原工业学院计算机工程系 8 1 2 派生类的定义 格式 class 派生类名 继承方式 基类名 派生类新增的数据成员和成员函数 10 太原工业学院计算机工程系 派生类的定义实例 例如 class TPerson 定义基类TPerson char name 10 int age char sex public void print class TStudent public TPerson 派生类TStudent的新成员 int class no int score public void show count sum avg 11 太原工业学院计算机工程

5、系 派生类的定义 说明 从已有类派生出新类时 可以在派生类内 完成以下几种功能 1 增加新的数据成员 2 增加新的成员函数 3 重新定义基类中已有的成员函数 4 改变现有成员的属性 12 太原工业学院计算机工程系 8 1 3 派生类的成员构成 派生类中的成员分为两大部分 一部分 是从基类继承来的成员 另一部分是在声明派 生类时增加的新成员 每一部分均分别包括数 据成员和成员函数 图5 给出了派生类 TStudent的成员构成 13 太原工业学院计算机工程系 派生类的成员构成 基类TPerson 继承 新增成员 派生类TStudent char name 10 char name 10 int

6、age int age char sex char sex void print void print int class no int score void show count sum avg 14 太原工业学院计算机工程系 8 2 继承方式与成员访问规则 既然派生类中包含基类成员和派生类自己增加的成员 就产生了这两部分成员的关系和访问属性的问题 派生类对基 类成员的访问形式主要有以下两种 1 内部访问 由派生类中新增成员对基类继承来的成员的 访问 2 对象访问 在派生类外部 通过派生类的对象对从基类 继承来的成员的访问 派生类对基类的继承方式有3种 公有继承方式 public 私有继承方

7、式 private 和保护继承方式 protected 不同继承方式的影响主要体现在 1 派生类成员对基类成员的访问控制 2 派生类对象对基类成员的访问控制 15 太原工业学院计算机工程系 8 2 1 公用继承 public 当类的继承方式为public 公有 继承 时 基类的public成员和protected成员被继 承到派生类中仍作为派生类的public成员和 protected成员 派生类的其他成员可以直接 访问它们 但是 类的外部使用者只能通过 派生类的对象访问继承来的public成员 基类的private成员在派生类中仍然是 private成员 所以无论是派生类成员还是通 过派生类

8、的对象 都无法直接访问从基类继 承来的private成员 但是可以通过基类提供 的public成员函数间接访问它们 16 太原工业学院计算机工程系 公用继承 public 基类TApublic继承 新增成员 派生类TB 访问权限 private int private x private int private x 对派生类TB来说 无论是其 成员还是对象都不可以直 接访问 int protected y protected int protected y 派生类TB的成员可以直接访 问 但是其对象不可以直 接访问 public int public z public int public z

9、 对派生类TB来说 无论是其 成员还是对象都可以直接 访问 private void f1 类TB的成员可以直接访问 但是TB的对象不可以直接 访问 public void fun 类TB的成员和对象均可以直 接访问 17 太原工业学院计算机工程系 公用继承 public 应用实例 实例8 2 1 公有继承应用实例 class TPerson char name 10 int age char sex public void Init Person char str int age1 char s void print void TPerson Init Person char str int

10、 age1 char s strcpy name str age age1 sex s 18 太原工业学院计算机工程系 公用继承 public 应用实例 void TPerson print cout n name age sex class TStudent public TPerson Public公有继承方式 int class no int score public void Init Student char str2 int age2 char s2 int c no int score1 void show st void TStudent Init Student char s

11、tr2 int age2 char s2 int c no int score1 在派生类中直接访问基类person的Init Person 成员函数 Init Person str2 age2 s2 class no c no score score1 19 太原工业学院计算机工程系 公用继承 public 应用实例 void TStudent show st print cout class no score endl include include void main TStudent st 通过派生类对象st直接访问基类Person的公有成员函数 Init Person st Init

12、 Person Li Ping 18 F st print st Init Student Li Ping 18 F 1 98 st show st 20 太原工业学院计算机工程系 8 2 2 私有继承 private 当类的继承方式为private 私有 继承时 基类的public成员和protected成员被继承后作为派 生类的private成员 派生类的其他成员可以直接 访问它们 但是在类外部通过派生类的对象无法 访问 基类的private成员在私有派生类中是不可直 接访问的 所以无论是派生类成员还是通过派生 类的对象 都无法直接访问从基类继承来的 private成员 但是可以通过基类提

13、供的public成员 函数间接访问 21 太原工业学院计算机工程系 私有继承 private 基类TPersonPrivate 继承 新增成员 派生类TStudent 访问权限 private char name 10 int age char sex private char name 10 int age char sex 派生类TStudent的成员 和对象均不可以直 接访问 Init Person char str int age1 char s void print private void print void Init Person char str int age1 char

14、s 派生类TStudent的成员 可以直接访问 但 是其对象不可以直 接访问 private int class no int score 派生类TStudent的成员 可以直接访问 但 是其对象不可以直 接访问 public void Init Student char str2 int age2 char s2 int c no int score1 void show st 派生类TStudent的成员 和对象均可以直接 访问 22 太原工业学院计算机工程系 私有继承 private 应用实例 实例8 2 2 私有继承应用实例 class TPerson char name 10 int

15、 age char sex public void Init Person char str int age1 char s void print void TPerson Init Person char str int age1 char s strcpy name str age age1 sex s 23 太原工业学院计算机工程系 私有继承 private 应用实例 void TPerson print cout n name age sex Private私有继承方式 class TStudent private TPerson int class no int score publ

16、ic void Init Student char str2 int age2 char s2 int c no int score1 void show st 24 太原工业学院计算机工程系 私有继承 private 应用实例 void TStudent Init Student char str2 int age2 char s2 int c no int score1 Init Person str2 age2 s2 class no c no score score1 void TStudent show st print cout class no score endl 25 太原工业学院计算机工程系 私有继承 private 应用实例 include include void main TPerson p TStudent st 通过派生类对象只能访问本类成员函数 p Init Person Li Ping 18 F p print st Init Student Li Ping 18 F 1 98 st show st 26 太原工业学院计算机工程系 8 2 3 保护继承

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号