北邮课件--c++(a).pdf
文本预览下载声明
C++编程(10)
Tang Xiaosheng
北京邮电大学电信工程学院
第12章派生类
o 引言
o 派生类
o 抽象类
o 类层次结构的设计
o 类层次结构和抽象类
o 忠告
Beijing University of Posts Telecommunications young@buptnet.edu.cn
12.1 引言
o C++从Simula那里借用了类以及类层次结
构的概念,此外,还有有关系统设计的思想
o 概念不会孤立的存在,它总与一些相关的概
念共存,用类来述概念,不可避免的需要
用类述概念之间的关系
o 派生类的概念及其相关的语言机制使得我们
能够表述一种层次性的关系,即:表述一些
类之间的共性
Beijing University of Posts Telecommunications young@buptnet.edu.cn
o 例如:圆和三角形概念之间有关系,因为它
们都是形状,即它们之间共有形状这个概念
o 若在程序中表示一个圆和一个三角形,但是
却没有涉及到形状的概念,就应该认为是丢
掉了某些最基本的东西
o 这个简单的思想就是面向对象程序设计的基
础
Beijing University of Posts Telecommunications young@buptnet.edu.cn
12.2 派生类
o 考虑做一个程序,处理某公司雇佣的人员
struct Employee struct Manager
{ {
string first_name; Employee emp;
string family_name; // 经理的雇佣记录
char middle_initial; listEmployee* group;
Date hiring_date; // 所管理的人员
short department; short level;
}; };
o 程序员很容易知道Employee和Manager之间的关系,但是
编译器却对此一无所知
o 好的述方法应该能够把Manager也是Employee的事实明
确地表述出来
Beijing University of Posts Telecommunications young@buptnet.edu.cn
派生类示例
struct Manager : public Employee
{
listEmployee* group;
short level;
}; // 注意,Employee必须在Manager之前定义,不能只声明
o 此Manager是从Employee派生(继承)出来的,也
即:Employee是Manager的一个基类,而
Manager则是Employee的一个子类
o 类Manager中包含了类Employee中的所有成员,
再加上一些自己的成员
Beijing University of Posts Telecommunications young@buptnet.edu.cn
派生类的实现方式
一种常见的实现方式, Employee: Manager:
就是将派生类的对象也 first_name first_name
表示为一个基类的对象, family_name family_name
只是将那些特别属于派 … …
生类的信息附加在最后
显示全部