C++程序设计教程 第7章 面向对象程序设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
细节,实现“高内聚、低耦合”。
查询成绩 外内
学生
高考成绩 英语 数学 语文
7.1 类与对象
7.1.4 函数重载
函数重载是指同一个函数名可以对应多个函数的实现,即多个函数可共用 一个函数名。
int sum( int a , int b ) { return a + b ; } double sum( double a , double b ) { return a + b ; } int main( ) {
7.3 多态
7.3.2 多态的实现机制
在 C++中实现多态需要满足以下几个前提条件: (1)必须存在基类和派生类,即多态依赖类的继承。 (2)在基类和派生类中具有同名的虚函数。 (3)对派生类中虚函数的调用必须使用指向基类的指针或引用来进行。
7.3 多态
7.3.3 纯虚函数与抽象类
略。
定义中的基类名必须是已有类的名称,派生类名则是新建的类名。一个派生 类可以只有一个基类,称为单继承;也可以同时有多个基类,称为多重继承。
继承方式有 3 种:公有继承(public)、私有继承(private)和保护继承 (protected)。如果省略继承关键字,系统默认的继承方式是私有继承。继承 方式不同,派生类自身及其使用者对基类成员的访问权限不同。
第7章 面向对象程序设计
7.1 类与对象 7.2 类的继承与派生 7.3 多态
学习目标
LEARNING OBJECTIVES
理解类与对象的概念
掌握类与对象的定义
了解类的继承、派生与多态
7.1 函数
目录
Contents
7.1.1 类的定义 7.1.2 对象的定义 7.1.3 数据封装 7.1.4 函数重载
虚函数是 C++实现多态的重要条件。当基类中的某个成员函数被声明为虚函 数后,可以在派生类中改写该函数,实现不同的功能。虚函数的格式如下:
virtual 类型 成员函数名 (参数表) { }
虚函数的使用方法如下: • 在基类中的某一个成员函数前加上关键字 virtual,该成员函数就被声明为虚
函数。 • 在派生类中改写该成员函数,改写时使用与基类完全相同的函数声明方式。 • 定义一个指向基类的指针,让该指针指向派生类的某一对象。 • 通过指针调用该虚函数,所调用的就是指向的派生类中的同名成员函数。
7.1 类与对象
7.1.1 类的定义
类是对现实世界的抽象,包括数据和对数据操作的函数;对象是类的实例
化。类中的数据称为数据成员,类中的函数称为成员函数。
格式: class 类名 {
• 定义类的关键字为 class; • 类的定义由两大部分构成:说明部分和实现部分; • 类的成员分为数据成员和成员函数两种;
7.1 类与对象
7.1.3 数据封装
C/C++通过 3 种访问权限符来实现数据封装,隐藏对象的属性和实现细节, 仅对外公开接口和对象进行交互,将数据和操作数据的函数进行有机结合。
➢ 封装:把对象的属性和方法结合成一个独立的单位。 ➢ 信息隐藏:尽可能隐蔽对象的内部细节。 ➢ 目的:外界不能直接存取对象的内部信息,不知道对象内部实现
public: 公有成员
protected: 保护成员
• 类体内不允许对数据成员初始化; • 数据成员的声明方式同普通变量的声明,可以是任意类
型,也可以是对象;
private:
• 成员函数的说明在类体内,而成员函数的定义可以在类
私有成员
体内,也可以在类体外;
};
• 类成员具有 3 种访问权限;
7.1 类与对象
cout << sum( 1 , 2 ) << endl ; cout << sum( 1.1 , 1.2 ) << endl ; return 0 ; }
7.2 类的继承与派生
目录
Contents
7.2.1 继承的内涵 7.2.2 派生类的定义 7.2.3 成员函数的重写 7.2.4 派生类的继承方式
7.1.2 对象的定义
定义类只是相当于定义了一种数据类型,若要使用它,则必须定义该类型 的变量,也就是该类的对象。
格式: class 类名 {
数据成员; 成员函数; } 对象名表列; 或 类名 对象名 1[,对象名 2,…]; 定义了类的对象以后,可以通过对象访问类的公有数据成员,基本格式如下: •对象名.数据成员名 •对象名.成员函数名(参数表)
7.2 类的继承与派生
7.2.3 成员函数的重写
略。
7.2 类的继承与派生
7.2.4 派生类的继承方式
略。
7.3 多态
目录
Contents
7.3.1 虚函数 7.3.2 多态的实现机制 7.3.3 纯虚函数与抽象类
7.3 多态
7.3.1 虚函数
多态是面向对象程序设计的一个重要特征。多态是指一个对象的多种形态。 一个类的派生类可以定义它们唯一的行为(方法),同时共享基类的相同特征。
7.2 类的继承与派生
7.2.1 继承的内涵
继承是面向对象方法提高重用性的重要措施,继承表现了特殊类与一般类 之间的关系。
子类可以继承父类中的属性和方法也可以定义自己独有属性和方法。
哺乳纲
真兽亚纲
原兽亚纲 后兽亚纲
奇蹄目
食肉目
灵长目
……
单孔目
有袋目
原猴亚目 简鼻亚目 类的继承与派生
7.2.2 派生类的定义
派生类是指在已有类的基础上生成新类。已有类称为基类(父类),从基类 基础上生成的类称为派生类(子类)。派生类继承了基类的数据成员和成员函 数。在生成派生类时可以加入数据成员和成员函数。派生类的定义格式为:
格式: class 派生类名:[继承方式] 基类名 1[,继承方式 基类名 2,…,继承方式 基类名 n] {派生类增加的数据成员和成员函数};
查询成绩 外内
学生
高考成绩 英语 数学 语文
7.1 类与对象
7.1.4 函数重载
函数重载是指同一个函数名可以对应多个函数的实现,即多个函数可共用 一个函数名。
int sum( int a , int b ) { return a + b ; } double sum( double a , double b ) { return a + b ; } int main( ) {
7.3 多态
7.3.2 多态的实现机制
在 C++中实现多态需要满足以下几个前提条件: (1)必须存在基类和派生类,即多态依赖类的继承。 (2)在基类和派生类中具有同名的虚函数。 (3)对派生类中虚函数的调用必须使用指向基类的指针或引用来进行。
7.3 多态
7.3.3 纯虚函数与抽象类
略。
定义中的基类名必须是已有类的名称,派生类名则是新建的类名。一个派生 类可以只有一个基类,称为单继承;也可以同时有多个基类,称为多重继承。
继承方式有 3 种:公有继承(public)、私有继承(private)和保护继承 (protected)。如果省略继承关键字,系统默认的继承方式是私有继承。继承 方式不同,派生类自身及其使用者对基类成员的访问权限不同。
第7章 面向对象程序设计
7.1 类与对象 7.2 类的继承与派生 7.3 多态
学习目标
LEARNING OBJECTIVES
理解类与对象的概念
掌握类与对象的定义
了解类的继承、派生与多态
7.1 函数
目录
Contents
7.1.1 类的定义 7.1.2 对象的定义 7.1.3 数据封装 7.1.4 函数重载
虚函数是 C++实现多态的重要条件。当基类中的某个成员函数被声明为虚函 数后,可以在派生类中改写该函数,实现不同的功能。虚函数的格式如下:
virtual 类型 成员函数名 (参数表) { }
虚函数的使用方法如下: • 在基类中的某一个成员函数前加上关键字 virtual,该成员函数就被声明为虚
函数。 • 在派生类中改写该成员函数,改写时使用与基类完全相同的函数声明方式。 • 定义一个指向基类的指针,让该指针指向派生类的某一对象。 • 通过指针调用该虚函数,所调用的就是指向的派生类中的同名成员函数。
7.1 类与对象
7.1.1 类的定义
类是对现实世界的抽象,包括数据和对数据操作的函数;对象是类的实例
化。类中的数据称为数据成员,类中的函数称为成员函数。
格式: class 类名 {
• 定义类的关键字为 class; • 类的定义由两大部分构成:说明部分和实现部分; • 类的成员分为数据成员和成员函数两种;
7.1 类与对象
7.1.3 数据封装
C/C++通过 3 种访问权限符来实现数据封装,隐藏对象的属性和实现细节, 仅对外公开接口和对象进行交互,将数据和操作数据的函数进行有机结合。
➢ 封装:把对象的属性和方法结合成一个独立的单位。 ➢ 信息隐藏:尽可能隐蔽对象的内部细节。 ➢ 目的:外界不能直接存取对象的内部信息,不知道对象内部实现
public: 公有成员
protected: 保护成员
• 类体内不允许对数据成员初始化; • 数据成员的声明方式同普通变量的声明,可以是任意类
型,也可以是对象;
private:
• 成员函数的说明在类体内,而成员函数的定义可以在类
私有成员
体内,也可以在类体外;
};
• 类成员具有 3 种访问权限;
7.1 类与对象
cout << sum( 1 , 2 ) << endl ; cout << sum( 1.1 , 1.2 ) << endl ; return 0 ; }
7.2 类的继承与派生
目录
Contents
7.2.1 继承的内涵 7.2.2 派生类的定义 7.2.3 成员函数的重写 7.2.4 派生类的继承方式
7.1.2 对象的定义
定义类只是相当于定义了一种数据类型,若要使用它,则必须定义该类型 的变量,也就是该类的对象。
格式: class 类名 {
数据成员; 成员函数; } 对象名表列; 或 类名 对象名 1[,对象名 2,…]; 定义了类的对象以后,可以通过对象访问类的公有数据成员,基本格式如下: •对象名.数据成员名 •对象名.成员函数名(参数表)
7.2 类的继承与派生
7.2.3 成员函数的重写
略。
7.2 类的继承与派生
7.2.4 派生类的继承方式
略。
7.3 多态
目录
Contents
7.3.1 虚函数 7.3.2 多态的实现机制 7.3.3 纯虚函数与抽象类
7.3 多态
7.3.1 虚函数
多态是面向对象程序设计的一个重要特征。多态是指一个对象的多种形态。 一个类的派生类可以定义它们唯一的行为(方法),同时共享基类的相同特征。
7.2 类的继承与派生
7.2.1 继承的内涵
继承是面向对象方法提高重用性的重要措施,继承表现了特殊类与一般类 之间的关系。
子类可以继承父类中的属性和方法也可以定义自己独有属性和方法。
哺乳纲
真兽亚纲
原兽亚纲 后兽亚纲
奇蹄目
食肉目
灵长目
……
单孔目
有袋目
原猴亚目 简鼻亚目 类的继承与派生
7.2.2 派生类的定义
派生类是指在已有类的基础上生成新类。已有类称为基类(父类),从基类 基础上生成的类称为派生类(子类)。派生类继承了基类的数据成员和成员函 数。在生成派生类时可以加入数据成员和成员函数。派生类的定义格式为:
格式: class 派生类名:[继承方式] 基类名 1[,继承方式 基类名 2,…,继承方式 基类名 n] {派生类增加的数据成员和成员函数};