1. 抽象
对同一类对象的共同属性和行为进行概括,形成类。
数据抽象:描述类的属性和状态(对象相互区别的物理量)
代码抽象:描述类的功能
class Clock
{
public:
void setTime(int newH, int newM, int newS);
void showTime();/代码抽象
private:
int hour,minute,second;//代码抽象
};
2. 封装
将抽象出来的数据/代码封装在一起,形成类,将它们视为一个整体。
目的:增强安全性以及简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口(public里头的函数),以特定的访问权限(public/private/protected),来使用类的成员。
3. 继承
在已有类的基础上,进行扩展形成新的类。
4. 多态
同一个名称,不同的功能实现。
目的:达到行为标志统一,减少程序中标志符的个数。
类和对象
1. 类定义:可以给数据成员设置类内初始值,这个是用于初始化数据成员用的。
如果有构造函数对数据成员进行初始化,那就用构造函数初始化。如果没有的话,就会用类内的初始值。
class Clock
{
public:
void setTime(int newH, int newM, int newS);
void showTime();
private:
int hour = 0, minute = 0, second = 0;//类内初始化
};
2. 访问权限
public: 是类与外部的接口。任何外部函数都可以访问公有数据和函数。
private:只允许本类的函数访问。(类里默认的成员为private成员)
protected:与私有成员类似。继承派生有差别。
例子:
#include<iostream>
using namespace std;
class Clock
{
public:
void setTime(int newH=0, int newM=0, int newS=0);//当调用这个函数时,如果给了实参
//就用实参值,如果没给,就用默认参数值(0,0,0)
void showTime();
private:
int hour,minute,second;
};
void Clock::setTime(int newH, int newM, int newS)//成员函数的实现
{
hour = newH;
minute = newM;
second = newS;
}
void Clock::showTime()//成员函数的实现
{
cout << hour << ":" << minute << ":" << second;
}
int main()
{
Clock myClock;
myClock.setTime(8, 30, 30);
myClock.showTime();
return 0;
}