第7讲(继承及派生).doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第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 调用Mammal的构造函数endl;

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档