目录
什么是封装
封装的意义
1.将属性和行为作为一个整体,表现生活中的事物
2.对属性和行为进行权限控制
如何封装
封装语法
封装的基本步骤
定义类
声明成员变量
声明成员函数
实现成员函数
使用封装的类
示例
struct和class区别
默认成员访问权限
继承方式
什么是封装
在C++中,封装是一种面向对象编程的核心概念,也是C++面向对象三大特性之一 ,通过使用类和访问控制修饰符来实现数据和方法的封装。
封装的意义
1.将属性和行为作为一个整体,表现生活中的事物
封装将一个对象的属性(数据成员)和行为(成员函数)组合成一个整体,以表示现实生活中的事物。对象的属性描述了该对象的状态和特征,而对象的行为描述了对该对象的操作和功能。通过封装,属性和行为被组织在一个独立的单元(类)中,形成了一个完整的抽象实体,从而更好地模拟和描述现实世界的事物。
2.对属性和行为进行权限控制
封装还提供权限控制,也称为访问控制。通过使用访问修饰符(如private、protected、public),可以对对象的属性和行为进行权限控制。
- private:私有权限,只有在类的内部才能访问和修改。私有属性和行为对于外部代码是不可见的,只能通过公共接口(公共成员函数)来间接访问和修改。
- protected:受保护权限,可以在类的内部和派生类中访问和修改。受保护属性和行为对于外部代码也是不可见的,但可以在继承关系中被派生类访问。
- public:公共权限,可以在类的内部和外部代码中访问和修改。公共属性和行为对于外部代码是可见的,并且可以直接访问和修改。
通过权限控制,我们可以限制对对象的访问范围,确保对象的数据封装性和安全性。私有属性只能通过公共接口进行访问,这样可以在接口中添加逻辑验证和约束。另外,通过限制访问权限,还可以隐藏对象的内部实现细节,提供更好的抽象接口给外部代码使用。
如何封装
在C++中,封装是通过定义类来实现的。
在设计类的时候,属性和行为写在一起,用于表现事物
封装语法
class 类名{ 访问权限: 属性 / 行为 };
封装的基本步骤
定义类
使用
class
关键字定义一个类,并给它一个合适的名称。类应该代表一个概念、实体或对象,并具有相关的属性和行为。
声明成员变量
在类的内部声明需要封装的属性(成员变量)。这些成员变量可以是私有的(private)或受保护的(protected),以实现数据隐藏和访问控制。
声明成员函数
在类的内部声明需要封装的行为(成员函数)。这些成员函数用于访问和操作成员变量,以及提供对外的公共接口。(直接在内部写则无需声明)
实现成员函数
在类外部实现成员函数(类内部也可),即定义成员函数的具体功能和逻辑。可以根据需要访问和修改成员变量,实现对象的行为。
使用封装的类
在程序的其他地方实例化类对象,并通过公共接口访问和操作类的成员。外部代码只能通过公共接口来使用对象,无法直接访问私有成员。
通过以上步骤,我们可以将属性和行为封装在一个类中,并通过适当的访问修饰符控制对其的访问权限。这样可以实现数据的隐藏和保护,同时提供一致的公共接口供外部代码使用。
示例
class MyClass {
private:
int myPrivateVariable;
protected:
float myProtectedVariable;
public:
void myPublicMethod();
};
void MyClass::myPublicMethod() {
// 实现代码
}
int main() {
MyClass obj;
obj.myPublicMethod(); // 访问公共方法
// obj.myPrivateVariable; // 错误,无法访问私有成员
return 0;
}
struct和class区别
默认成员访问权限
在结构体中,默认的成员访问权限是公有(public)(默认你写在public关键字下),也就是说结构体的成员变量和成员函数默认可以在任何地方被访问。
在类中,默认的成员访问权限是私有(private)(默认你写在private关键字下),也就是说类的成员变量和成员函数默认只能在类内部访问,外部无法直接访问。
继承方式
在结构体中,默认的继承方式是公有继承(public inheritance),也就是说结构体可以通过继承来派生出子结构体,子结构体的成员的访问权限与父结构体相同。
在类中,默认的继承方式是私有继承(private inheritance),也就是说类可以通过继承来派生出子类,但子类的成员的访问权限为私有,外部无法直接访问。文章来源:https://www.toymoban.com/news/detail-616518.html
除了上述区别外,结构体和类在其他方面基本上是相同的。它们都可以具有成员变量、成员函数、构造函数、析构函数等,并且都可以使用访问修饰符来控制成员的访问权限。文章来源地址https://www.toymoban.com/news/detail-616518.html
到了这里,关于Day 13 C++ 封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!