第8章类和对象.ppt
《第8章类和对象.ppt》由会员分享,可在线阅读,更多相关《第8章类和对象.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第8章章 类和对象类和对象8.1 面向对象程序设计方法概述面向对象程序设计方法概述8.2 类的声明和对象的定义类的声明和对象的定义8.3 类的成员函数类的成员函数8.4 对象成员的引用对象成员的引用8.5 类的封装性和信息隐蔽类的封装性和信息隐蔽8.6 类和对象的简单应用举例类和对象的简单应用举例8.1面向对象程序设计方法概述面向对象程序设计方法概述1.对对象象object2.封装与信息封装与信息隐隐蔽蔽encapsulation,imformationhiding3.抽象抽象abstraction4.继继承与重用承与重用inherit,reusability5.多多态态性性polymorp
2、hism8.2类类的声明和的声明和对对象的定象的定义义类和对象的关系类和对象的关系 每一个实体都是对象。有一些对象是具有相同的结构和特性的。每一个实体都是对象。有一些对象是具有相同的结构和特性的。每个对象都属于一个特定的类型。每个对象都属于一个特定的类型。在在C+中对象的类型称为类中对象的类型称为类(class)。类代表了某一批对象的类代表了某一批对象的共性和特征。前面已说明:共性和特征。前面已说明:类是对象的抽象,而对象是类的具体实类是对象的抽象,而对象是类的具体实例例(instance)。正如同结构体类型和结构体变量的关系一样,人们正如同结构体类型和结构体变量的关系一样,人们先声明一个结构
3、体类型,然后用它去定义结构体变量。同一个结构先声明一个结构体类型,然后用它去定义结构体变量。同一个结构体类型可以定义出多个不同的结构体变量在体类型可以定义出多个不同的结构体变量在C+中也是先声明一个中也是先声明一个类类型,然后用它去定义若干个同类型的对象。对象就是类类型的类类型,然后用它去定义若干个同类型的对象。对象就是类类型的一个变量。可以说类是对象的模板,是用来定义对象的一种抽象类一个变量。可以说类是对象的模板,是用来定义对象的一种抽象类型。型。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是抽象的,不占用内存,而对象是具体的,占用存储空间。在一开始时弄清对象和类的关系是十分重要
4、的。在一开始时弄清对象和类的关系是十分重要的。类是一个集合,对象类是一个集合,对象是集合的元素。是集合的元素。声明类类型(重点)声明类类型(重点)class类名类名private:私有的数据和成员函数私有的数据和成员函数;public:公用的数据和成员函数公用的数据和成员函数;classStudentprivate:intnum;charname20,sex;public:voiddisplay()coutnum:numendl;coutname:nameendl;coutsex:sexendl;#definePI3.1415classCircleprivate:doubleradius;pu
5、blic:voidSetRadius(doubler)radius=r;doublearea()returnradius*radius*PI;定义对象的方法定义对象的方法 只要声明了一个类类型,就可以用只要声明了一个类类型,就可以用这个类类型名来定义类对象,定义方法这个类类型名来定义类对象,定义方法类似于结构体类型变量的定义。类似于结构体类型变量的定义。classStudentprivate:intnum;charname20,sex;public:voiddisplay()coutnum:numendl;coutname:nameendl;coutsex:sexendl;Studentstu
6、1;但是但是Studentstu2=1002,ZhouYuncai,m;是不合法的!是不合法的!类对类对象的定象的定义义与与结结构体构体变变量的定量的定义义唯一区唯一区别别就在于就在于变变量的初始化!量的初始化!结构体变量的定义的回顾1、在声明结构体类型的同时定义结构体变量、在声明结构体类型的同时定义结构体变量structDateintmonth,day,year;d;这时,这时,Date是一个结构体类型名,是一个结构体类型名,d是一个是一个Date类型的变量。类型的变量。2、先声明结构体类型,后定义结构体变量、先声明结构体类型,后定义结构体变量structDateintmonth,day,y
7、ear;Dated;/这时,这时,Date是一个结构体类型名,是一个结构体类型名,d是一个是一个Date类型的变量。类型的变量。3、在定义结构体变量时还可以对其进行初始化、在定义结构体变量时还可以对其进行初始化structDateintmonth,day,year;d1=12,1,2008;Dated2=11,2,2008;类对象的定义也可以有两种:也可以有两种:1)在声明类类型的同时定义类对象;)在声明类类型的同时定义类对象;2)先生明类类型,)先生明类类型,后定义类对象。后定义类对象。如何才能使得类对象可以初始化?如何才能使得类对象可以初始化?如果不能对类对象初始化,如何给类对象赋初值?如
8、果不能对类对象初始化,如何给类对象赋初值?classStudentprivate:intnum;charname20,sex;public:voiddisplay()coutnum:numendl;coutname:nameendl;coutsex:sexendl;public:Studentstu2=1002,ZhouYuncai,m;构造函数构造函数匿名类类型结构体中也可以有函数#includeusingnamespacestd;structDateintmonth,day,year;voidshowdate()coutyear(month10?:0:)month(day10?:0:)da
9、yendl;intmain()Dated=12,3,2008;d.showdate();return0;2008:12:03struct与class的区别struct与与class的唯一区别是用的唯一区别是用struct声明声明的类型中的成员或成员函数的默认可访的类型中的成员或成员函数的默认可访问权限是问权限是public,而用,而用class声明的类型声明的类型中的成员或成员函数的默认可访问权限中的成员或成员函数的默认可访问权限是是private的。的。关于public、private以及以及protected严格地讲,用严格地讲,用struct或或class声明类型时声明类型时,每一个成员
10、或成员函数的每一个成员或成员函数的前面都应该加一个修饰词前面都应该加一个修饰词public:、:、private:或者:或者protected:。:。类似于:类似于:public:int a;private:double b;protected:void setData();等等这三个关键词用于说明类类型对象的这三个关键词用于说明类类型对象的成员或者成员函数的访问权限成员或者成员函数的访问权限何谓访问权限?何谓访问权限?关于public、private以及以及protected何谓访问权限?何谓访问权限?类对象的成员和成员函数的访问方式与结构体类型变量的成员类对象的成员和成员函数的访问方式与结
11、构体类型变量的成员访问方式相同,格式为:访问方式相同,格式为:对象名对象名.成员成员/成员函数成员函数;但是,如果一个成员或者成员函数的前面加了修饰词但是,如果一个成员或者成员函数的前面加了修饰词private或或者者protected,则就不能用对象名进行访问!,则就不能用对象名进行访问!classCTestprivate:inta;public:doubleb;CTestobj;obj.b=23.45;/OKobj.a=45;/ERRORprivate与与protected的区别要等到学了继承之后才能讨论!的区别要等到学了继承之后才能讨论!8.3类的成员函数类的成员函数成员函数的性质成员函
12、数的性质类的成员函数类的成员函数(简称类函数简称类函数)是函数的一种,它的用法和是函数的一种,它的用法和作用和第作用和第4章介绍过的函数基本上是一样的,它也有返章介绍过的函数基本上是一样的,它也有返回值和函数类型,它与一般函数的区别只是:回值和函数类型,它与一般函数的区别只是:它是属于它是属于一个类的成员,出现在类体中。它可以被指定为一个类的成员,出现在类体中。它可以被指定为private(私有的私有的)、public(公用的公用的)或或protected(受保护的受保护的)。在使用类函数时,要注意调用它的权限在使用类函数时,要注意调用它的权限(它能否被调用它能否被调用)以及它的作用域以及它的
13、作用域(函数能使用什么范围中的数据和函数函数能使用什么范围中的数据和函数)。例如私有的成员函数只能被本类中的其他成员函数所调例如私有的成员函数只能被本类中的其他成员函数所调用,而不能被类外调用。用,而不能被类外调用。在类外调用时在类外调用时,一般要定义一个一般要定义一个类对象类对象,然后利用类对象调用类函数。然后利用类对象调用类函数。成员函数可以访问本类中任何成员成员函数可以访问本类中任何成员(包括私有包括私有的和公用的的和公用的),也可以调用本类中的任何函数。可,也可以调用本类中的任何函数。可以引用在本作用域中有效的数据。以引用在本作用域中有效的数据。一般的做法是将需要被外界调用的成员函数一
14、般的做法是将需要被外界调用的成员函数指定为指定为public,它们是类的对外接口。但应注意,它们是类的对外接口。但应注意,并非要求把所有成员函数都指定为并非要求把所有成员函数都指定为public。有的函有的函数并不是准备为外界调用的,而是为本类中的成员数并不是准备为外界调用的,而是为本类中的成员函数所调用的,就应该将它们指定为函数所调用的,就应该将它们指定为private。这这种函数的作用是支持其他函数的操作,是类中其他种函数的作用是支持其他函数的操作,是类中其他成员的工具函数成员的工具函数(utility function),类外用户不类外用户不能调用这些私有的工具函数。能调用这些私有的工具
15、函数。类的成员函数是类类的成员函数是类体中十分重要的部分。也可以没有成员函数。体中十分重要的部分。也可以没有成员函数。在类外定义成员函数在类外定义成员函数#include#includeusingnamespacestd;classStudentpublic:voiddisplay();voidset(intn,stringstr,charch);private:intnum;stringname;charsex;intmain()Studentobj;obj.set(10031,ZhouYuncai,M);obj.display();voidStudent:display()cout学好学好
16、:numendl;cout姓名姓名:nameendl;cout性性别别:sexhour=12;p-minute=50;p-second=34;8.5类的封装性和信息隐蔽类的封装性和信息隐蔽公用接口与私有实现的分离公用接口与私有实现的分离从前面的介绍已知:从前面的介绍已知:C+通过类来实现封装性,把数通过类来实现封装性,把数据和与这些数据有关的操作封装在一个类中,或者说,据和与这些数据有关的操作封装在一个类中,或者说,类的作用是把数据和算法封装在用户声明的抽象数据类的作用是把数据和算法封装在用户声明的抽象数据类型中。类型中。在声明了一个类以后,用户主要是通过调用公用的成在声明了一个类以后,用户主
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象
限制150内