- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 继承与派生的
第9章 继承与派生;本章导读 ; 继承(Inherit) 是一种联结类的层次模型,允许和鼓励类的重用用以扩展已存在的功能,提供了一种明确表述共性的方法,实现代码重用。继承是面向对象程序设计的重要特征。
派生(derive) 是继承的产物,派生是通过继承基类中原有的特性,并在此基础上修改原有功能或添加一些新的功能来产生新类。现实世界中利用分类、分层次进行分析和描述事物特征的事例很多,如交通工具、动物类等等。 ;本章提要:;9.2 继承与派生的概念 ;9.2.1 类的继承与派生概念 ; 在继承与派生时,必须同时满足两个条件:需要从基类中继承部分或全部属性和行为特性,并在此基础上有约束或扩展。即:
(1)继承基类中部分或全部数据成员和函数成员;
(2)改变基类中部分成员数据成员和函数成员;
(3)增加新的数据成员和函数成员。;9.2.2 派生类的定义 ;【例9.1】定义描述二维平面中一个点的类,并以此为基类派生出平面上圆的类。 ;class Circle:public Point //在基类Point的基础上增加半径成员,派生了圆类
{
double radius;
public:
Circle(double r=0) { radius=r; }
double area( )
{ return PI*radius*radius; }
};;9.2.3 基类成员的访问控制 ;【例9.2】说明一个矩形类,通过公有继承方式,派生长方体类,通过派生类成员函数和派生类的对象访问基类中不同访问权限的成员。 ; float Area(){return Length*Width;}
float GetL(){return Length;}
float GetW(){return Width;}
void RPrint()
{ cout“矩形的长为:” Length;
cout\t宽为:Width;
}
};;class Cuboid:public Rectangle
{ float High;
public:
Cuboid(){High=0;}
Cuboid(float l,float w,float h)
:Rectangle(l,w) {High=h;}
void CPrint()
{ cout长方体的长为:GetL() \t宽为:Width; cout\t 高为:High
\t体积为:High*Area()\n; }
};;void main()
{
Rectangle r(10,5);
r.RPrint();
cout\t面积为:r.Area()\n;
Cuboid c(6,3,10);
cout矩形的长为:c.GetL() \t宽为:c.GetW(); cout\t面积为:c.Area()\n; c.CPrint();
}; 基类 派生类 ;2. 私有继承
私有继承时,基类中具有公有和保护访问权限的成员成为派生类的私有成员,基类中私有访问权限的成员在派生类中不可直接访问,在派生类内可以通过基类中公有函数成员访问基类中的私有成员。
【例9.3】说明一个矩形类,通过私有继承方式,派生一个长方体类,通过派生类成员函数和派生类的对象访问基类中不同访问权限的成员。;#includeiostream.h
?class Rectangle
{ float Length;
protected:
float Width;
public:
Rectangle(){Length=0;Width=0;}
Rectangle(float l,float w)
{Length=l;Width=w;}
float Area(){return Length*Width;}
float GetL(){return Length;}
void RPrint()
{ cout矩形的长为:Length
\t宽为:Width;}
};;class Cuboid:private Rectangle
{ float High;
public:
Cuboid(){High=0;}
Cuboid(float l,float w,float h)
:Rectangle(l,w){ High=h;}
void CPrint()
{ cout长方体的长为:GetL() \t宽为:Width; cout\t 高为:High
\t体积为:
您可能关注的文档
最近下载
- 美剧剧本怪诞小镇台词本中英文对照精排版第一季第一集.pdf VIP
- 小学英语课堂教学中问题情境创设策略的研究.pdf VIP
- 基金会筹备工作方案.pdf VIP
- 2025年上海市高考语文散文构思题及答案汇编.pdf VIP
- 2023年初中美术课题研究方案.docx VIP
- GB/T 14571.4-2022工业用乙二醇试验方法 第4部分:紫外透光率的测定 紫外分光光度法.pdf
- 中国国家标准 GB/T 14571.3-2022工业用乙二醇试验方法 第3部分:醛含量的测定.pdf
- 出入院制度流程.pptx VIP
- 国家标准 GBT 3049-2006 工业用化工产品 铁含量测定的通用方法 1,10-菲啰啉分光光度法.pdf
- FIDIC银皮书(中英文对照),.doc VIP
文档评论(0)