学习C++不得不说到C++的三大特性:封装、继承、多态,今天就先来剖析一下他的封装性。
1、什么是封装
封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
下面把一个汽车抽象为一个类来举例:
2、封装的目的
封装的目的是增强安全性和简化编程,它们分别体现在:
①增强安全性:使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的数据成员。通过封装使一部分成员充当类与外部的接口(函数/方法,一般定义为公有public),而将其他的成员隐蔽起来(一般定义为私有private,根据需要也会定义为protected),这样就达到了对成员访问权限的合理控制,使不同类之间的相互影响减少到最低限度,进而增强数据的安全性。
②简化编程:封装存在的理由就是代码的重用(复),重用就是写的一段代码可以在很多地方得到使用,而不是每需要使用时就写一份,而且易于扩充。从开发的角度这样十分的省事,不必做重复的工作,在使用的角度,十分的节约内存,
3、封装的访问权限
①公有
通过关键字public来实现,公有访问方式是允许访问的最高级别,公有的成员可以被类的成员函数访问,也可以在类外被直接访问,一般用public来定义类的接口。
②私有
通过关键字private来实现,私有访问方式是允许访问的最低级别,私有的成员在可以本类的成员函数访问,但不能在该类外直接被访问,。
③保护
通过关键字protected来实现,保护的成员可以在本类及派生类中被访问。
最后,用上面的汽车类给出实际的代码:
class Car
{
public:Car(char _Brand[20], char* _Color, int _Price, char* _Orgin, int _Consumption) //构造函数: Brand(_Brand) //初始化列表, Color(_Color), Price(_Price), Consumption(_Consumption), Orgin(_Orgin){}Car(const Car& car) //拷贝构造函数: Brand(car.Brand) //初始化列表, Color(car.Color), Price(car.Price), Consumption(car.Consumption), Orgin(car.Orgin){}~Car() //析构函数{cout << "~Car" << endl;}void Run(){cout << "run the car" << endl;}void Drive(){cout << "drive" << endl;}void Park(){cout << "park" << endl;}void Back(){cout << "back a car" << endl;}void Refuel(){cout << "refuel" << endl;}
private:char *Brand;char *Color;int Price;char *Orgin;int Consumption;
};