当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《C++语言程序设计》教材电子教案(PPT教学课件)第7章 继承与派生

资源类别:文库,文档格式:PPT,文档页数:60,文件大小:381KB,团购合买
7.1 类的继承与派生 7.2 类的继承方式 7.3 派生类的构造过程和析构过程 7.4 多继承
点击下载完整版文档(PPT)

第7章继承与派生 7.1类的继承与派生 72类的继承方式 7.3派生类的构造过程和析构过程 74多继承

第7章 继承与派生 7.1 类的继承与派生 7.2 类的继承方式 7.3 派生类的构造过程和析构过程 7.4 多继承

第7章继承与派生 ‖7.1类的继承与派生 71.1继承与派生的基本概念 在原有类的基础上派生出新的类,新类继承原有类的属性和 方法,称原有的类为基类,新类称为派生类。 人类: 姓名、性别、年龄、身高、体重 教师类: 姓名、性别、年龄、身高、体重、专业、职称 管理人员类 姓名、性别、年龄、身高、体重、职务 教师管理人员类:姓名、性别、年龄、身高、体重、专业、职称、职务 学生类: 姓名、性别、年龄、身高、体重、学号、班级、专业 间接基类 人类 直接基类教师类□管理人员类学生类单继承:派生类 只有一个基类 教师管理人员类多继承:派生类 有多个基类

7.1 类的继承与派生 7.1.1 继承与派生的基本概念 在原有类的基础上派生出新的类,新类继承原有类的属性和 方法,称原有的类为基类,新类称为派生类。 第7章 继承与派生 人类: 姓名、性别、年龄、身高、体重 教师类: 姓名、性别、年龄、身高、体重、专业、职称 管理人员类: 姓名、性别、年龄、身高、体重、职务 教师管理人员类: 姓名、性别、年龄、身高、体重、专业、职称、职务 学生类: 姓名、性别、年龄、身高、体重、学号、班级、专业 人类 教师类 管理人员类 学生类 教师管理人员类 多继承:派生类 有多个基类 单继承:派生类 只有一个基类 直接基类 间接基类

第7章继承与派生 ‖7.1类的继承与派生 71.2派生类的声明 单继承派生类的声明语法为: cass派生类名:继承方式基类名 派生类新增成员的声明 继承方式有三种( private, protected, public),在下一节中 详细介绍

7.1 类的继承与派生 7.1.2 派生类的声明 单继承派生类的声明语法为: class 派生类名 : 继承方式 基类名 { 派生类新增成员的声明; } 继承方式有三种(private,protected,public),在下一节中 详细介绍。 第7章 继承与派生

第7章继承与派生 例71定义一个位置坐标类,属性有x坐标和y坐标,成员函数 包括构造函数、获取X坐标的函数、获取y坐标的函数和移动位 置到新的坐标点函数。然后定义派生类点类,除了继承基类 (位置类)的成员外,又增加了新的数据成员颜色、获取颜色 值的成员函数和显示数据成员值的函数 include #include <string. h class CLocation∥位置坐标类 private int x int y; public CLocation(int X=0, int y=O) void Move To(int x, int y) int GetXo int Geto

例7.1 定义一个位置坐标类,属性有x坐标和y坐标,成员函数 包括构造函数、获取x坐标的函数、获取y坐标的函数和移动位 置到新的坐标点函数。然后定义派生类点类,除了继承基类 (位置类)的成员外,又增加了新的数据成员颜色、获取颜色 值的成员函数和显示数据成员值的函数。 #include #include class CLocation //位置坐标类 { private: int x; int y; public: CLocation(int x=0, int y=0); void MoveTo(int x, int y); int Getx(); int Gety(); }; 第7章 继承与派生

第7章继承与派生 例7.1(续一) CLocation: CLocation(int x, int y) CLocation:X=X;∥/可以写成this->X=x CLocation:y=y;∥可以写成this->y=y; void CLocation Move To(int x, int y) CLocation:X=x;∥可以写成this->x=x CLocation:y=y;∥可以写成this->y=y; int CLocation: Getxo 可通过域运算符(:)访问类中的 return x 成员x和y,与使用this指针有同样 作用 int CLocation Getyo return y;

例7.1 (续一) CLocation::CLocation(int x, int y) { CLocation::x = x; // 可以写成 this->x = x; CLocation::y = y; // 可以写成 this->y = y; } void CLocation::MoveTo(int x, int y) { CLocation::x = x; // 可以写成 this->x = x; CLocation::y = y; // 可以写成 this->y = y; } int CLocation::Getx() { return x; } int CLocation::Gety() { return y; } 可通过域运算符(::)访问类中的 成员x和y,与使用this指针有同样 作用 第7章 继承与派生

第7章继承与派生 例7.1(续 class CPoint: public CLocation∥从 LOcation中公有继承 private char Color[10] public CPoint(char*c) void setcolor(char *c) void showo CPoint:: C Point(char*c) strcpy( color, c) void CPoint: Setcolor(char *c) 调用从 CLocation类中继承来的成 员函数GeO和GetY(。 strcpy( color, c) void CPoint: Showo cout < Getxo <<, <<Gety( <<<< Color < endl

例7.1 (续二) class CPoint : public CLocation //从CLocation中公有继承 { private: char Color[10]; public: CPoint(char *c); void SetColor(char *c); void Show(); }; CPoint::CPoint(char *c) { strcpy(Color,c); } void CPoint::SetColor(char *c) { strcpy(Color,c); } void CPoint::Show() { cout << Getx() << "," << Gety() << " " << Color << endl ; } 第7章 继承与派生 调用从CLocation类中继承来的成 员函数GetX()和GetY()

第7章继承与派生 例71(续三) void main(void) 位置坐标通过 Location类构造函 数的默认参数值设置为(0,0) CPoint p( Red); p Showo p Move To(7, 8) p Showo p SetColor("Green") p Showo 程序运行结果为 0,0 Red 7,8 Red 7,8 Green 返回

例7.1 (续三) void main(void) { CPoint p("Red"); p.Show(); p.MoveTo(7,8); p.Show(); p.SetColor("Green"); p.Show(); } 位置坐标通过CLocation类构造函 数的默认参数值设置为(0,0) 程序运行结果为: 0,0 Red 7,8 Red 7,8 Green 第7章 继承与派生 返 回

第7章继承与派生 7.2类的继承方式 类成员的访问权限 私有成员( private):可以被类自身的成员和友元访问,但不能被包 括派生类在内的其他任何类和任何普通函数访问 公有成员( public):可以被任何普通函数和任何类的成员函数访问 保护成员( protected):可以被类自身的成员和友元访问外,还可以 被派生类的成员函数访问,但不能被任何非友元的普通函数访问 类的三种继承方式: 公有继承(pubc: 保护继承( protected): 私有继( private):

7.2 类的继承方式 类成员的访问权限: 私有成员(private):可以被类自身的成员和友元访问,但不能被包 括派生类在内的其他任何类和任何普通函数访问 公有成员(public):可以被任何普通函数和任何类的成员函数访问 保护成员(protected):可以被类自身的成员和友元访问外,还可以 被派生类的成员函数访问,但不能被任何非友元的普通函数访问 类的三种继承方式: 公有继承(public): 保护继承(protected): 私有继承(private): 第7章 继承与派生

第7章继承与派生 7.2类的继承方式 7.2.1公有继承 公有继承的特点: (1)基类的私有成员不能被派生类的函数成员访问 (2)基类的公有成员和保护成员在派生类中的访问权限不变 分析例7.1 基类 CLocation中的公有成员Getx()、Gety()和 MoveTo(),在派生类 C Point中的访问权限仍然是公有的。 而x,y是基类 CLocation的私有成员,在派生类 CPoint的成 员函数中不能访问。如果将 CPoint类的成员函数Show()改写成 下面的形式: void CPoint Showo cout <<x<<", <<y<<<<Color < endl 错误信息:“不能访问 CLocation类中 的私有成员x,y

7.2 类的继承方式 7.2.1 公有继承 公有继承的特点: (1) 基类的私有成员不能被派生类的函数成员访问 (2) 基类的公有成员和保护成员在派生类中的访问权限不变 分析例7.1 基类CLocation中的公有成员Getx()、Gety()和 MoveTo(),在派生类CPoint中的访问权限仍然是公有的。 而x,y是基类CLocation的私有成员,在派生类CPoint的成 员函数中不能访问。如果将CPoint类的成员函数Show()改写成 下面的形式: void CPoint::Show() { cout << x << "," << y << " " << Color << endl ; } 第7章 继承与派生 错误信息:“不能访问CLocation类中 的私有成员x,y

第7章继承与派生 7.2类的继承方式 7.2.1公有继承(续一) 若将基类 CLocation中的X,y改成保护成员,即 class clocation protected int x 将x,y改为保护成员后,上面的 showO Int y, 就可以直接访问成员x和y了 ublic int GetXo int Geto void Move To(int x, int y) CLocation(int X=0, int y=0)

7.2 类的继承方式 7.2.1 公有继承(续一) 若将基类CLocation中的x,y改成保护成员,即: class CLocation { protected: int x; int y; public: int Getx(); int Gety(); void MoveTo(int x, int y); CLocation(int x=0, int y=0); }; 第7章 继承与派生 将x,y改为保护成员后,上面的show() 就可以直接访问成员x和y了

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共60页,可试读20页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有