C++第四章类与对象
一、面向对象的基本特点
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;
};
- 对象是现实中对象在程序中的模拟
- 类是同一类对象的抽象,对象是类的某一特定实体
- 定义类的对象,才可以通过对象使用类中定义的功能
2.封装
- 将抽象出的数据、代码封装在一起,形成类。
- 目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。
- 实现封装:类声明中的{}
- 例:
class Clock {
public: void setTime(int newH, int newM, int newS);
void showTime();
private: int hour, minute, second;
};
3.继承
在已有类的基础上,进行扩展形成新的类。
详见第7章
4.多态
- 多态:同一名称,不同的功能实现方式。
- 目的:达到行为标识统一,减少程序中标识符的个数。
- 实现:重载函数和虚函数——见第8章
二、类和对象
1.类定义的语法形式和访问控制
class //类名称
{
pubilc:
//公有成员(外部接口),任何函数都可访问
private:
//私有成员,只允许本类中的函数访问
protected:
//保护型成员,详见第七章
}
2.对象定义的语法
类名 对象名;
例:Clock myClock;
3.类成员的访问权限
1.类中成员互相访问
直接使用成员名访问
2.类外访问
使用“对象名.成员名”方式访问 public 属性的成员
3.例4_1-1:钟表类
//类的定义
#include
using namespace std;
class Clock {//对象名为Clock
public:
void setTime(int newH=0, int newM=0, int newS=0);//外部接口,公有成员函数,有默认参数值
void showTime();//成员名有两个,setTime和showTime
private://私有数据成员
int hour,minute, second;
};
//Clock类成员函数的实现
void Clock::setTime(int newH,int newM,int newS){//注意类中的函数,要写::(类的作用域限定符)
hour=newH;
minute:newM;
second=newsS;
}
void Clock::showTime(){
cout< } //对象的使用 int main(){ Clock myClock;//定义对象,myClock myClock.setTime(8,30,30);//调用setime函数,值为8,30,30 myClock.showTime();//调用showtime,显示时间 return 0; } 运行结果为 8:30:30 4.类内初始值 class Clock { public: void setTime(int newH, int newM, int newS); void showTime(); private: int hour = 0, minute = 0, second = 0;//0即类内初始值 }; 5.类的成员函数语法 1.将函数体放在类的声明中。 or2.使用inline关键字。