- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2022-9-21
1
现实中的继承与派生
在自然界中,继承这个概念是非常普遍的。例如:小猫仔继承了猫爸猫妈的特性,所以长的是猫鼻子猫眼,我们不会把它错认为是小狗。
继承就是将一些本质的特性遗传给子代,使后代在很大程度上具有与父代相同的性质。
子代同时还具有父代没有的特性。
第1页/共46页
2022-9-21
2
再来看一个现实世界中的例子:
四边形是一个基本的概念,矩形、正方形、菱形和平行四边形都是派生的概念,因为它们都属于四边形,它们继承了四边形的所有性质,同时又扩充出各自的特性。
第2页/共46页
2022-9-21
3
从上面的例子可以看出:
而且子代可以拥有父代没有的特性,这是可扩充的概念。
一旦指定了某种事物父代的本质特征,那么它的子代将会自动具有那些性质。这就是一种朴素的可重用的概念。
第3页/共46页
2022-9-21
4
从软件设计的角度来看:
基于已有的类,可以建立新的类。这个新的类既重用已有类的功能,又扩展了新的功能。
类是某类事物共同特性的体现,它对外提供了特定的功能。
第4页/共46页
2022-9-21
5
C++的继承关系
继承就是在一个已经存在的类的基础上建立另一个新的类。
已存在的类称为“基类”或“父类”,新建立的类称为“派生类”或“子类”,如图所示:
第5页/共46页
2022-9-21
6
派生类的功能主要通过以下方式来体现:
派生类的特性
吸收基类成员
添加新成员
改造基类成员
从编码的角度来看,派生类从基类中以较低的代价换来了较大的灵活性。一旦产生了可靠的基类,只需要调试派生类中所作的修改即可。派生类可以对继承的属性进行扩展、限制或改变。
第6页/共46页
2022-9-21
7
单继承和多继承
单继承:派生类只有一个直接基类
多继承:派生类有多个直接基类
第7页/共46页
2022-9-21
8
单继承派生类
定义单继承派生类的语法格式:
class 派生类名 : 继承方式 基类名{
……//派生类新添加的成员
};
“继承方式”可以是public、private、以及 protected。
虽然继承了基类的所有成员,但是派生类并非都能访问基类的所有成员,继承方式会影响派生类对基类中各种成员的引用。
第8页/共46页
2022-9-21
9
公有派生类
在声明派生类时将继承方式指定为public时,该类称为公有派生类。
class 派生类名 : public 基类名
{
……//派生类新添加的成员
};
第9页/共46页
2022-9-21
10
基类的成员在公有派生类中的引用权限
基类
公有成员
私有成员
保护成员
公有派生类
公有成员
不可访问成员
保护成员
不可访问成员
在类外不能被直接访问。
在派生类的类内不能被直接访问。
第10页/共46页
2022-9-21
11
举例:公有派生
class Base{
int v1;
public:
int v2;
Base(int a=0,int b=0){
v1=a;v2=b;
}
};
class Derived : public Base{
int v3;
public:
int v4;
Derived(int a=0,int b=0){
v3=a;v4=b;
}
void func(){
int sum1=v1+v2+v3+v4;
int sum2=v2+v3+v4;
}
};
void main( ){
Derived obj(5,6);
obj.v2=8;
}
//错误
第11页/共46页
2022-9-21
12
私有派生类
在声明派生类时将继承方式指定为private时,该类称为私有派生类。
class 派生类名 : private 基类名
{
……//派生类新添加的成员
};
第12页/共46页
2022-9-21
13
基类的成员在私有派生类中的引用权限
基类
公有成员
私有成员
保护成员
私有派生类
私有成员
不可访问成员
私有成员
第13页/共46页
2022-9-21
14
举例:私有派生
class Base{
int v1;
public:
int v2;
Base(int a=0,int b=0){
v1=a;v2=b;
}
};
class Derived : private Base{
int v3;
public:
int v4;
Derived(int a=0,int b=0){
v3=a;v4=b;
}
void func(){
int sum1=v1+v2+v3+v4;
int sum2=v2+v3+v4;
}
};
void main(
文档评论(0)