EC+面向对象程序设计 计算机与信息学院 罗宪
C++面向对象程序设计 计算机与信息学院 罗宪
第四章派生类、基类和继承性 (教材①P201-240) 本章主要内容 >继承的概念 >单继承的派生类 >派生类的构造函数与析构函数 ●>基类和派生类的赋值规则 多继承 >综合举例
第四章 派生类、基类和继承性 (教材①P201-240) 本章主要内容: ➢继承的概念 ➢单继承的派生类 ➢派生类的构造函数与析构函数 ➢基类和派生类的赋值规则 ➢多继承 ➢综合举例
第四章派生类、基类和继承性 (教材①P201-240) >继承是面向对象程序设计最重要的概念之一; >继承主要作用:提高软件的可重用性和可维护性,从 而大大减少软件的代码量; >继承的思想是学习面向对象程序设计应建立的最主要 的思想在程序设计时,面对多个实体,首先应分 析的是能否采用继承机制处理。 在C++面向对象程序设计中,实现继承的机制是通过 派生得到的,即在已有类的基础上创建新类,从而在 新类中继承原类的成员(数据及函数)。 原类(被继承的类)称为基类,在基类的基础上刨建 的新类称为派生类
第四章 派生类、基类和继承性 (教材①P201-240) ➢继承是面向对象程序设计最重要的概念之一; ➢继承主要作用:提高软件的可重用性和可维护性,从 而大大减少软件的代码量; ➢继承的思想是学习面向对象程序设计应建立的最主要 的思想——在程序设计时,面对多个实体,首先应分 析的是能否采用继承机制处理。 ➢在C++面向对象程序设计中,实现继承的机制是通过 派生得到的,即在已有类的基础上创建新类,从而在 新类中继承原类的成员(数据及函数)。 ➢原类(被继承的类)称为基类,在基类的基础上创建 的新类称为派生类
第一节繼承的概念 (教材①P201-203) 什么是继承 >继承是客观世界中实体间的一种关系。如: 汽车 运输汽车 专用汽车 客车 货车 消防车 洒水车
第一节 继承的概念 (教材①P201-203) 一、什么是继承 ➢继承是客观世界中实体间的一种关系。如: 汽车 运输汽车 客车 货车 消防车 洒水车 专用汽车
第一节繼承的概念 (教材①P201-203) Point(x, y) Rectangle Circle Window Text Graphics Window Window Text on Editor Editor
第一节 继承的概念 (教材①P201-203) Point(x,y) Text Editor Window Rectangle Circle Graphics Window Text Window Icon Editor
第一节繼承的概念 (教材①P201-203) 由此可知,继承具有以下特点 女继承具有层次结构 ★越在上面的类越具有普通性和共性,下层比上层 更具体,越在下层越细化、专 的全部数据结构及操作方法(数据成员及成员函 数) 三、继承的分类及有关术语 继承的分类 单继承:只有一个基类的继承构成树形类层次结 构(P203) >多继承:有二个或以上基类的继承构成有向图的 层次结构(P203)
第一节 继承的概念 (教材①P201-203) ➢由此可知,继承具有以下特点: 继承具有层次结构 越在上面的类越具有普通性和共性,下层比上层 更具体,越在下层越细化、专门化。 继承具有传递性,即派生类能自动继承上层基类 的全部数据结构及操作方法(数据成员及成员函 数)。 三、继承的分类及有关术语 1、继承的分类: ➢单继承:只有一个基类的继承——构成树形类层次结 构(P203) ➢多继承:有二个或以上基类的继承——构成有向图的 层次结构(P203)
第一节繼承的概念 (教材①P201-203) 2、继承的有关术语 >基类(Base) >派生类Dere) 直接基类 亠>间接基类 >直接派生 >间接派生
第一节 继承的概念 (教材①P201-203) 2、继承的有关术语 ➢基类(Base) ➢派生类(Derived) ➢直接基类 ➢间接基类 ➢直接派生 ➢间接派生
第二节单繼承的派生类 (教材①203-219) 派生类的定义 1、定义格式: class派生类名:} >例【41】在基类bae中定义一个平面点,通过派生 derived定义空间点
第二节 单继承的派生类 (教材①203-219) 一、派生类的定义 1、定义格式: class 派生类名: 基类名 { } ➢例【4.1】在基类base中定义一个平面点,通过派生 derived定义空间点
第二节单繼承的派生类 (教材①203-219) #includesiostream> using namespace std class Base∥基类Base的定义 i private float x, y; public: Base(float a=0, float b=0) {x=a;y=b;} void print(void) i cout<<x=<<x<<ny=<<y<<end;)
第二节 单继承的派生类 (教材①203-219) #include using namespace std; class Base //基类Base的定义 { private: float x,y; public: Base(float a=0,float b=0) {x=a;y=b;} void print(void) { cout<<"x="<<x<<"\ny="<<y<<endl;} };
第二节单繼承的派生类 (教材①203-219) class Derived: public base 一派生类 Derived的定义注意定义方法 i private: float z. public: Derived (float a=0, float b=0, float c=0): Base(a, b z=c;}/派生类的构造函数定义 void print(void)/派生类的成员函数 { Base:;prin0:调周用基类Bse的成员函数pit(; 2 coutse'T '/Ksen
第二节 单继承的派生类 (教材①203-219) class Derived:public Base //派生类Derived的定义——注意定义方法 { private: float z; public: Derived(float a=0,float b=0,float c=0):Base(a,b) { z=c;}//派生类的构造函数定义 void print(void) //派生类的成员函数 { Base::print();//调用基类Base的成员函数print(); cout<<"z="<<z<<endl; } };