logo头像

不忘初心,奋力前行

第四章:类与对象(一)

本文于1861天之前发表,文中内容可能已经过时,如有问题,请联系我。

一、面向对象程序的基本特点 1.抽象。抽象又分为数据抽象和代码抽象。 以钟表为例: 数据抽象:描述某类对象的属性或状态(对象相互区别的物理量),如int hour, int minute, int second等。 代码抽象:描述某类对象的共有的行为特征或具有的功能,如setTime() , showTime()等。 封装:将抽象出的数据、代码封装在一起,形成类。 目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。 实现封装:类声明中的{} 例如: class Clock { public: void setTime(int newH, int newM, int newS); void showTime(); private: int hour, minute, second; }; public函数提供了类对外的访问接口,setTime()和showTime()是外部访问接口。private里面几个数据则是隐藏在类里面的,从外面看不到的。 2、继承。在已有类的基础上,进行扩展形成新的类。 3、多态:同一名称,不同的功能实现方式。 目的:达到行为标识统一,减少程序中标识符的个数。 实现:重载函数和虚函数 二、类与对象 类与对象的定义 对象是现实中的对象在程序中的模拟。 类是同一类对象的抽象,对象时类的某一特定实体。通过定义类的对象,才可以通过对象使用类中定义的功能。 设计一个类就是设计一个类型。 类的定义: class 类名称 { public: 公有成员(外部接口) private: 私有成员 protected: 保护型成员 } 初始化类内对象值: class Clock { public: void setTime(int newH, int newM, int newS); void showTime(); private: int hour = 0, minute = 0, second = 0; }; Ⅰ公有类型成员 在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。 Ⅱ 私有类型成员 在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。 Ⅲ保护类型成员 与private类似,其差别表现在继承与派生时对派生类的影响不同,详见第七章。 对象定义的语法 类名 对象名; 例:Clock myClock; 类成员的访问权限 类中成员互相访问:直接使用成员名访问 类外访问:使用“对象名.成员名”方式访问 public 属性的成员 类的成员函数 在类中说明函数原型; 可以在类外给出函数体实现,并在函数名前使用类名加以限定; 也可以直接在类中给出函数体,形成内联成员函数; 允许声明重载函数和带默认参数值的函数。 内联成员函数 为了提高运行时的效率,对于较简单的函数可以声明为内联形式。 内联函数体中不要有复杂结构(如循环语句和switch语句)。 在类中声明内联成员函数的方式: 将函数体放在类的声明中。 使用inline关键字。

支付宝打赏 微信打赏 QQ钱包打赏

感觉不错?欢迎给我 打个赏~我将不胜感激!