- 1、本文档共65页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C大学的基础教程第九章
北京邮电大学电信工程学院计算机技术中心 C++大学基础教程 第9章 继承与派生 第9章 继承与派生 9.1 继承与派生的概念 9.2 继承方式 9.3 派生类构造函数与析构函数 9.4 多继承 第9章 继承与派生 软件重用 第9章 继承与派生 类具有封装性、继承性和多态性 9.1 继承和派生的概念 在现有类的基础之上,创建新类的机制 现有的类为基类,新建立的类为派生类 新类继承了基类的属性和行为 新类是基类的特殊情况 不必从“草稿”开始创建特殊的程序对象 继承是处理“特殊情况”的面向对象编程机制 例: 定义基类shape class shape { private: int m_x,m_y; //位置 char m_color; //颜色 public: void setposition(int x, int y); void setcolor(char color); int getx(); int gety(); char getcolor(); }; 派生新类: circle 圆形 rectangle 矩形 triangle 三角形 直接基类和间接基类 class base {…… }; class deriver1:public base { …… }; class deriver2:public deriver1 {…… } 9.2 继承方式 三种继承方式 public、protected、private 不同继承方式的影响主要体现在: 派生类 成员 对基类成员的访问控制 派生类 对象 对基类成员的访问控制 定义派生类时要声明继承方式 例9.1 图形类及其派生类的声明 class Shape {public: Shape(int x=0, int y=0, char c = R); int GetX() const; void SetX( int x); int GetY() const; void SetY( int x); char GetColor() const; void SetColor(char c); protected: char m_color; int m_x; int m_y; }; class Circle : public Shape { public: Circle(int x, int y, float r=1, char color=R); float GetRadius () const; void SetCircle(int x, int y, float r, char color); void Draw(); private: float m_Radius; }; class Triangle: public Shape { public: Triangle(int x, int y, char color=R, float slen = 1); float GetSideLength() const; void SetTriangle(int x, int y, char color, float slen); void Draw(); private: float m_SideLength; }; class Rectangle: public Shape { public: Rectangle(int x, int y, char color, int length=10, int width=10); int GetWidth() const; int GetHeight() const; void Draw(); void SetRectangle (int x, int y, char color, int length, int width); private: int m_Width; int m_Length; }; 同名覆盖 派生类修改基类的成员 派生类中声明了一个与基类成员同名的新成员 由派生类的对象直接使用这个成员名 访问的是派生类中声明的同名新成员 这个新成员覆盖了从基类继承的同名成员,这种情况称为同名覆盖 例9.2 同名覆盖示例 #includeiostream using namespace std; class base { public: void function(){coutfunction of class baseendl;} }; class deriver: publi
文档评论(0)