一、面向对象的基本特点
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<iostream>
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<<hour<<":"<<minute<<":"<<second<<endl;
}
//对象的使用
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关键字。
标签:函数,Clock,对象,void,C++,int,成员,第四章 From: https://blog.51cto.com/u_15740457/6035830