封装是面向对象编程的三大基本特性之一,是C++类的一个重要概念。本文将通过示例代码介绍C++中封装的相关知识。
一、封装的概念
封装指将对象的状态信息(成员变量)和行为(成员函数)打包归于类的内部,并可以根据需求选择性对外开放。
封装的优点:
- 隐藏实现细节,只展示必要的接口
- 可以修改实现而不影响使用
- 提高安全性和可维护性
二、访问控制
C++通过访问控制实现封装:
- public:公开访问
- private:私有只能类内访问
- protected:保护类型,Subclass可以访问
class Person {
public:
string name;
private:
int age;
};
Person p;
p.name = "John"; // OK
p.age = 20; // 错误,private成员
三、getter和setter
对于需要访问的私有成员,可以提供公有的getter和setter方法:
class Person {
public:
int getAge() {
return age;
}
void setAge(int a) {
age = a;
}
private:
int age;
};
p.setAge(20);
int age = p.getAge();
getter和setter增强了封装,可以检查值的有效性。
四、接口和实现分离
类的接口与实现可以分离到.h和.cpp文件中:
// Person.h
class Person {
public:
int getAge();
void setAge(int age);
private:
int age;
};
// Person.cpp
#include "Person.h"
int Person::getAge() {
return age;
}
void Person::setAge(int age) {
this->age = age;
}
五、继承和封装
子类可以访问父类public和protected成员,可以继承封装性。
封装是C++类的重要概念之一,掌握封装可以写出更安全、易维护的代码。封装、继承和多态构成了C++面向对象编程的三大特性。