封装是C++面向对象三大特征之一
1、封装的意义
封装实现了类的接口和实现的分离。
封装后的类隐藏了它的实现细节,也就是说,类的用户只能是使用接口而无法访问实现部分。
意义:
1、将属性和行为作为一个整体,表现生活中的事物。
在设计类的时候,属性和行为写在一起,表现事物。
语法:class 类名 { 访问权限: 属性 / 行为 };
示例1:设计一个圆类,求圆的周长
第一步,设计圆的类
包括:1.访问权限,2.属性,3.行为
class Circle
{
//访问权限————公共权限
public:
//属性————半径
int m_r;
//行为————获取圆的周长
double calculateZC()
{
return 2 * PI * m_r;
}
};
第二步:实例化一个圆的对象
//通过圆类,创建一个具体的圆
Circle c1;
//给圆的对象c1 的属性进行赋值
c1.m_r = 10;
//行为
cout << "圆的周长为:" << c1.calculateZC() << endl;
2、将属性和行为加以权限控制。
类在设计时,可以把属性和行为放在不同的权限下,加以控制
C++中使用访问说明符(access specifiers)来加强类的封装性!
每个访问说明符指定了接下来的成员的访问级别,其有效范围直到出现下一个访问说明符 或者 到达类的结尾处为止。
三种访问权限:
public1、public 公共权限
类内可以访问,类外可以访问
public说明符之后的成员在整个程序内可以被访问, public成员定义类的接口。
protected 2、protected 保护权限
类内可以访问,类外不可以访问
private3、private 私有权限
类内可以访问,类外不可以访问
定义在private说明符之后的成员可以被 类的成员函数访问, 但不能被使用该类的代码访问, 也就是说,private部分封装了类的实现细节。
2、struct和class区别
struct 和 class 的默认访问权限不太一样。(是唯一区别!)
类可以在它的第一个访问说明符之前定义成员,对这种成员的访问权限依赖于类定义的方式。
如果我们使用struct关键字,则定义在第一个访问说明符之前的成员是public;
即:struct默认权限为公共。
如果我们使用class关键字,则这些成员是private的。
即:class默认权限为私有。
处于统一编程风格的考虑,当我们希望定义的类的所有成员是public的时,使用struct。
反之,如果希望成员是private的,使用class。
3、成员属性设置为私有
优点1:将所有成员属性设置为私有,可以自己控制读写权限。
企业开发的思路:提供一些公有的方法,对这些私有的属性进行读写的控制。
如:
class Person {
public:
//姓名设置可读可写
void setName(string name) {
m_Name = name;
}
string getName()
{
return m_Name;
}
private:
string m_Name; //可读可写 姓名
int m_Age; //只读 年龄
};
}
m_Name 和 m_Age 都是私有的(private),外界不能直接调用它们。
我们可以通过设置一些public的函数setName()和getName()来对private的属性进行控制。
优点2:对于写权限,我们可以检测数据的有效性。
标签:封装,private,class,访问,2.1,权限,public,属性 From: https://www.cnblogs.com/H43724334/p/18077617