- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4--派生类与继承(2007版)
派生类与继承
1、 类之间的关系
2、 派生类的概念
3、 派生类的构造函数与析构函数
4、 调整派生类中基类成员的访问属性
5、 多重继承
6、 赋值兼容规则
兰州理工大学计算机与通信学院 年福忠
1、类之间的关系
has-A,uses-A 和 is-A
has-A(包含关系),用以描述一个类由多个“部件类”构成。实现has-A关系用类成员表示,即一个类中的数据成员是已定义的类。
uses-A(一个类部分地使用另一个类),通过类之间成员函数的相互联系,定义友员或对象参数传递实现。
is-A(继承)。关系具有传递性,不具有对称性。
非对称性:不是所有植物都属于蕨类。
传递性: 高等植物、蕨类植物、芒萁都是植物,具有植物的共同特征。
植物
继承关系
继承 是类之间定义的一种重要关系。
一个 B 类继承A类,或称从类 A 派生类 B 类 A 称为基类(父类),类 B 称为派生类(子类)
B1,B2 的基类
A 的派生类
C1,C2,C3 的基类
A 的派生类(单继承)
C3的基类
B1,B2 的派生类(多继承)
B1 的派生类
继承关系
class person
{
protected:
char name[10];
int age;
char sex;
public:
void print( );
};
class employee
{
protected:
char name[10];
int age;
char sex;
char department[20];
float salary;
public:
void print( );
};
为什么要用继承?
继承:保持已有类的特性而构造新类的过程。
派生:在已有类的基础上新增自己的特性而产生新类的过程。
继承的目的:实现代码重用。
派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。
2、派生类的概念
继承关系的语法形式
class 派生类名 : 基类名表
{
数据成员和成员函数声明
};
派生类的声明
派生类的功能:
可以增加新的数据成员;
可以增加新的成员函数;
可以重新定义基类中已有的成员函数;
可以改变现有成员的属性。
基类名表 构成
访问控制 基类名1,访问控制 基类名2 ,… ,访问控制 基类名n
访问控制:表示派生类对基类的继承方式 public 公有继承
private 私有继承
protected 保护继承
派生类的声明
派生类对基类成员的使用,与继承访问控制和基类中成员性质有关;
公有继承 基类的公有成员?派生类的公有成员
基类的保护成员?派生类的保护成员
私有继承 基类的公有成员和保护成员
?派生类的私有成员
保护继承 基类的公有成员和保护成员
?派生类的保护成员
不论什么方式继承基类,派生类都不能直接使用基类的私有成员。
访问控制
(1)公有继承
#includeiostream.h
class A
{ public :
void get_XY() { cout Enter two numbers of x, y : ; cin x y ; }
void put_XY() { cout x = x , y = y \n ; }
protected: int x, y ;
};
class B : public A
{ public :
int get_S() { return s ; };
void make_S() { s = x * y ; }; // 使用基类数据成员 x,y
protected: int s;
};
class C : public B
{ public :
void get_H() { cout Enter a number of h : ; cin h ; }
int get_V() { return v ; }
void make_V() { make_S(); v = get_S() * h ; } // 使用基类成员函数
protected: int h, v
文档评论(0)