当前位置:文档之家› C第11章继承与派生PPT课件

C第11章继承与派生PPT课件

一个基类可以派生出多个派生类,每一个派 生类又可以作为基类再派生出新的派生类
继承的分类
❖单继承:一个派生类只从一个基类派生 ❖多继承:一个派生类从多个基类派生
单继承
多继承
大学在册人员实例
教职工(单继承)
在册人员 学生(单继承)
兼职教师(单继承)
教师(单继承) 工人(单继承) 行政人员(单继承) 研究生(单继承)
大多数工程都尽可能使用可以重用的部件
软件重用在以下层次中
❖代码
❖功能 ❖模块或类
难度增加
❖子系统
❖应用系统
C++提供的大量库函数是在功能级的重用
MFC、OLE、ActiveX是在类一级的重用
软件重用的含义 简单而言,就是以现成的程序模块为基础,实现新的应用系统
小型模块重用的示例 ❖各种库函数
❖在类中包含C另一+个+类的支对象持成员重用的机制 重用的关注点: --类的继承
int num; 这是“对象组合”的限制
类s的trin“g n继am承e; ”机制能通过“剪裁”派生需要的类
char sex;
BirthDate birthday;
};
§ 继承与派生的概念
继承就是在一个已存在的类的基础上建立一 个新的类
已存在的类称为基类(base class)或父类 (father class)
private: 子对象是“部件”
int int
ymeoanr;th组; 合产生的新类对象“包含”子对象,因此
int day; ❖新类对象具有子对象的属性和功能
}; class
Teacher//❖教新师类类对象能增加新属性与新功能
{ public: ❖新类对象不能“修改”子对象的功能

private:
❖现有的代码(界面)不需修改
❖能进行属性与方法的扩充:实现一些新的功能,但又不需从底层 开发。
❖能以规范的、标准的设计进行扩充
❖在类定义中包含其它类的对象成员(对象组合):可以重用其它 类定义的成员,但设计与使用没有统一的规范。
class BirthDate
//生日类
{ pu┆bli§c: 类的组合:在一个类中以另一个类的对象作为问基类中
访 问 控
的public和protected成员,但不能访问基类 的private成员。 派生类的对象只能访问基类的public成员。

//例2:
//派生c类la声ss明Student //声明基类
class {
{Student1:
publicp:ublic:
ccoouutt<<{<<″″
name: ″<<name<<endl; sex: ″<<sex<<endl;
//企图引用基类的私有成员,错误 //企图引用基类的私有成员,错误
coucot<u<t<″<n″aamgee:: ″″<<<<angaem<<e<en<denl;dl;
coucot<u<t<″<s″eaxd: d″r<e<sss:ex″<<<<eandddlr;<<endl;
}}
pprriivvaattee::
//基类私有成员
iinnttnaugme;;
//新增加的数据成员
第11章 继承与派生
信息学院信息技术教研室
整体概况
概况一
点击此处输入 相关文本内容
01
概况二
点击此处输入 相关文本内容
02
概况三
点击此处输入 相关文本内容
03
§ 面向对象程序设计4个主要特点
抽象 封装 继承:对现有的类重复利用 多态性:在继承的基础上,使程序设计更加
简单化
§ 关于软件重用(复用)
新建立的类称为派生类(derived class)或子 类(son class)
子类继承了父类 父类派生了子类 派生类是基类的具体化 基类则是派生类的抽象
现实世界的例子
交通工具
飞机
汽车

小汽车
卡车
旅行车
工具车
轿车
面包车
动物
猴子


狮子

猎豹
几 何形状

矩形
派生类继承了基类的所有数据成员和成员函 数,并可以对成员作必要的增加或调整
public、private(私有的)、protected
❖派生类所声明的对基类的继承方式
public、private(私有的)、protected
公有继承(public)
类 成
基类的public和protected成员的访问属性在 派生类中保持不变,但基类的private成员在
员 派生类不可访问。
stsrtirninggnaadmder;;
//新增加的数据成员
}; char sex;
};
§ 派生类的构成
从基类接收成员
❖基类全部的成员接收过来(不包括构造函数 和析构函数)
❖在设计时充分考虑到派生类的要求
调整从基类接收的成员
❖可以改变基类成员在派生类中的访问属性 ❖同名覆盖原则
在声明派生类时增加的成员
// 例1:
c/l/a派ss生S类tud声en明t //声明基类
{class Student1: public Student //声明基类是Student
{public:
//基类公用成员
pvuobildicd: isplay( )
{void display_1( )
//新增加的成员函数
c{out<<″ num: ″<<num<<endl;
public
Student
//声明基类是Student
//基类公用成员
void dviospidlayg_e1t(_)value( ) //新增加的成员函数
{ { cin>>num>>name>>sex; }
cout<v<o″idnudmis:p″la<<yn(u)m<<endl; //企图引用基类的私有成员,错误
§ 派生类成员的访问属性
在讨论访问属性时,要考虑以下几种情况:
❖基类的成员函数访问基类成员 ❖派生类的成员函数访问派生类自己增加的成员 ❖基类的成员函数访问派生类的成员 ❖派生类的成员函数访问基类的成员 ❖在派生类外访问派生类的成员 ❖在派生类外访问基类的成员
派生类成员的访问属性决定因素
❖基类成员所声明的访问属性
行政人员兼教师 (多重继承)
研究生助教 (多重继承)
在职研究生 (多重继承)
§ 派生类的声明方式
一般形式
class 派生类名: [继承方式] 基类名 {
派生类新增加的成员 };
继承方式
❖ public(公有的、公用的) ❖ private(私有的) ❖ protected(受保护的) ❖ 默认为private(私有的)
相关主题