- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7讲(继承与派生)
第7次上机
实验目的:
1.掌握类的继承的概念和使用方法。
实验内容:
7—5定义一个基类 Shape,在此基础上派生出Rectangle和Circle,二者豆油getArea()函数计算对象的面积,使用Rectangle类创建一个派生类Square
1)Shape类设计:
?根据分析,从Shape类中派生出了Rectangle和Circle,从Rectangle派生出了Square,这三个派生类之间没有共同的属性,所以Shape类可以不设计数据成员,而函数成员为GetArea(),函数体为为空
2)Rectangle类的数据成员有长和宽,函数成员有:构造函数,设置和获取函数,重载Shape类中的GetArea()来求面积
3)Rectangle类的数据成员有半径,函数成员有:构造函数,设置和获取函数,重载Shape类中的GetArea()来求面积
4)Square类从Rectangle类继承,吸收了Rectangle的长和宽,所以可以考虑用构造函数将长和宽设置相等的值,构成边长,而吸收过来的GetArea()函数不需要做修改。
参考答案:
#include iostream.h
class Shape
{
public:
void GetArea() { }
};
//定义矩形类
class Rectangle:public Shape
{
private:
int lenth;
int width;
public:
Rectangle(int l,int w) { lenth = l;width = w;}
double GetArea() { return lenth * width ;}
};
//定义圆类
class Circle:public Shape
{
private:
double radius;
public:
Circle(double r) { radius = r;}
double GetArea() { return 3.14 * radius * radius;}
};
//定义正方形类
class Square:public Rectangle
{
public:
Square(int a):Rectangle(a,a) { }
};
void main(void)
{
Rectangle rect(1,2);
Circle cr(3);
Square sq(4);
cout 矩形的的面积是:rect.GetArea()endl;
cout 圆的面积是: cr.GetArea()endl;
cout 正方形的面积是: sq.GetArea()endl;
}
说明:Shape类的作用:主要是为了统一处理,比如:Shape *p ; p -GetArea()形式,第八章会用到这样的技术。
课后习题7-6 定义一个动物类 Mammal,再由此派生出狗类Dog,定义Dog类的对象,观察基类与派生类的构造函数和析构函数的调用顺序。
//分析:
Mammal的设计:描述一般动物具有的特征,有颜色,体重,年龄等,会发声,有一般的设置函数和获取函数。
Dog的设计:除了具有一般动物的特征,还有尾巴个数,会汪汪叫,会摇尾巴,会咬人,有一般的设置函数和获取函数。
参考答案:
#include iostream.h
#include string.h
class Mammal
{
private:
char m_color[20];
int m_weight;
public:
void SetColor(char color[20]);
void SetWeight(int weight);
char *GetColor();
int GetWeight();
Mammal(char color[20],int weight);
~Mammal();
void CanSpeak();
};
void Mammal::SetColor(char color[20])
{
strcpy(m_color,color);
}
void Mammal::SetWeight(int weight)
{
m_weight = weight;
}
char * Mammal::GetColor(){ return m_color;}
int Mammal::GetWeight() { return m_weight;}
Mammal::Mammal(char color[20],int weight)
{
SetColor(color);
SetWeight(weight);
cout
您可能关注的文档
- 第6章表单.doc
- 第6课做守法公民.doc
- 第6课生活中的真菌.doc
- 第6课第二次世界大战的爆发(学案).doc
- 第70讲辨阴阳易差后劳复病证并治伤寒六经病证治总结文库.doc
- 第7章一阶电路和二阶电路的时域分析.doc
- 第7章习题与解答.doc
- 第7章一次函数.doc
- 第7章二阶电路.doc
- 第7章人机对话.doc
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)