1.封装的概念
封装是指将数据(属性)和操作数据的函数(方法)捆绑在一个类中,并通过访问权限控制外界对这些数据的访问。
封装的主要目的是隐藏对象的内部实现细节,只允许外部代码通过特定的接口(即类提供的方法)来访问和修改对象的状态。
2.访问修饰符
类的访问限制是通过在类主体内部对各个区域标记private、protected和public来实现的,关键字private、protected和public称为访问修饰符。
一个类可以有多个private、protected 或 public标记的区域。每个标记区域在下一个标记区域开始之前或者在遇到类主体结束右括号之前都是有效的。
- private(私有的):类的默认访问修饰符是 private,即没有使用访问修饰符标记时,成员默认是private的。私有成员变量或函数在类的外部是不可访问的,在派生类中也是不可访问的,只有本类和友元函数可以访问私有成员。实际操作中,我们一般会在私有区域定义数据,在公有区域定义相关的函数。
- protected(受保护的):受保护成员变量或函数与私有成员十分相似,但有一点不同,受保护成员在派生类(即子类)中是可访问的。
- public(公有的):公有成员在类的外部是可访问的,可以不使用任何成员函数来设置和获取公有变量的值。
3.封装的实现
在C++中,封装通常通过以下步骤实现:
- 定义类:将相关的数据和方法定义在类中。
- 使用访问修饰符:将数据定义为
private
或protected
,通过public
接口函数来访问和操作这些数据。class Class_Name { /*私有区域*/ public: /*公有区域*/ protected: /*受保护区域*/ private: /*私有区域*/ };
4.封装的优点
-
提高代码安全性:通过将数据设为
private
或protected
,外部代码不能直接访问对象的内部数据,从而防止无意的修改。 -
隐藏实现细节:封装隐藏了对象的内部实现,使用者无需知道对象是如何工作的,只需要知道如何与对象交互。这使得代码更加模块化,便于修改和维护。