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

面向对象程序设计 第7讲 第五章 类和对象(一) 内容 1、引言 2、类的定义及其抽象方法 3、对象的使用 引言 面向对象技术 是一种较为先进的技术 比较符合人们观察事物的思维方式 类是面向对象程序设计的核心. 它实际上是一种新的数据类型,也是实现抽象类型的工具。 类是对某一类对象的抽象;对象是某一种类的实例;二者密切相关。 面向对象计算的基本特征 --封装性、继承性、多态性 封装性 抽象为工具 抽象先于封装 封装则是指隐藏了抽象的内部细节。对类来说是封装了数据及对数据的操作 抽象封装的结果是一系列的类和对象 面向对象计算的基本特征 --封装性、继承性、多态性 继承性 继承表达了对象类之间的关系,子类拥有父类的属性和操作 面向对象计算的基本特征 --封装性、继承性、多态性 继承的优点 避免代码重复开发,减少数据和代码冗余 增强一致性来减少模块间的接口和界面 面向对象计算的基本特征 --封装性、继承性、多态性 不同的对象收到相同的消息产生不同的动作 两种多态性: 编译时多态性: 通过重载来实现 运行时多态性 通过虚函数来实现 5.1.1 什么是类 类是复杂的数据类型, 它将不同类型的数据和与这些数据相关的操作封装在一起。因此类具有更高的抽象性。类中数据具有隐藏性,类还具有封装性。 描述一类事物 类的内容: 数据 :称为数据成员 对数据的操作 :称为成员函数 类的定义格式 class类名 { public: 成员函数或数据成员的说明 private: 成员函数或数据成员的说明 }; 各个成员函数的实现 类的定义格式 访问控制符 public:为公有属性,private:为私有属性; 访问控制符在类体内,顺序无关,而且可以有多个访问控制符。 各个成员函数的实现是类定义中的实现部分,这部分包含所有类体内说明的函数的定义。如果一个成员函数在类体内定义了,实现部分将不出现。如果所有的成员函数都在类体内定义,实现部分可以省略。 ⑶成员的实现部分格式:类名::函数名(参数表) 类:狗 分析 有名字 有年龄, 有主人 会跑 会叫 狗信息查看 结果 类狗的属性和动作特性的封装 类:车量 分析 车辆载重 车牌号 车类型 会移动 结果 描述车辆的类 日期类 分析: 静态特性:年、月、日 动态特性:修改年、月、日;判别是否为闰年;日期信息查看 结果: 定义类应注意事项 ①类体内不允许对所定义的数据成员进行初始化。 ②类中数据成员的类型是任意的,可以包含整型、浮点、字符、指针和引用等。也可以是对象。另一个类的对象也可以作为该类的成员。 ③一般地,在类体内线说明公有成员,它们是用户所关心的,后说明私有成员,它们是用户不感兴趣的;说明数据成员时,一般按照类型的大小,由小至大说明,这样可以提高空间利用率。 ④习惯上,将类的说明部分和实现部分分开放置 对象的定义 对象是类的实例;对象属于某个类。因此定义对象之前,一定要先定义该对象的类。 对象的定义格式 类名对象名称 对象成员的表示方法 一般对象: 对象名.成员名 对象名.成员名(参数表) 指针对象: 对象名?成员名 对象名?成员名(参数表) ※两种表示方式等价 构造函数、析构函数 构造函数和析构函数是两个特殊的函数。 可以写在类体内,也可以写在类体外。 构造函数的功能 在创建对象时,使用给定的值来将对象初始化。 构造函数名字和类名相同,不指定类型,它有隐含的返回值,该值有系统内部使用;该函数可以有参数,也可以无参数; 构造函数是自动调用的。 析构函数的功能是用来释放一个对象的。在对象删除前,用它来做一些清理工作。 一个类中只能由一个析构函数。该函数没有参数 析构函数可以被调用,也可以系统调用,下面两种情况下,析构函数被调用 构造函数、析构函数 a)如果一个对象被定义在一个函数体内,则当这个函数结束时,该对象的析构函数被自动调用。 b)当一个对象用new运算符被动态创建时,在使用delete释放时将自动调用析构函数。 格式: 类名::类名([参数]) { } 类名::~类名() { } 缺省构造函数和缺省析构函数 在类定义中如果没有定义任何构造函数时,编译器自动生成一个不带参数的缺省构造函数,其格式如下: 类名::类名() { } 按构造函数的规定,缺省构造函数名同类名;缺省构造函数的这样格式也可以由程序员定义在类体内。在程序中定义一个对象而没有指明初始化时,则编译器便按照缺省构造函数来初始化该对象。 缺省构造函数和缺省析构函数 同样,缺省析造函数格式如下: 类名::~类名() { } 缺省构造函数是一个空函数。 类名::~类名() { } 拷贝构造函数 功能 用一个对象来初始化一个被创建的同类的对象,它是

文档评论(0)

138****7331 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档