面向对象有三个特征:封装、继承和多态。 本节主要讲解封装。
所有的 C++ 程序都有以下两个基本要素: 函数:这是程序中执行动作的部分,它们被称为函数或方法。 数据:数据是程序的信息,会受到程序函数的影响,也叫属性。
封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。
我们已经知道,类包含私有成员(private)、保护成员(protected)和公有成员(public)成员。默认情况下,所有的数据成员和函数成员都是私有的。 为了使类中的成员变成公有的(即程序中的类外部的其他部分也能访问),必须在这些成员前使用 public 关键字进行声明。所有定义在 public 标识符后边的属性或函数可以被程序中所有其他的函数访问。
例子:
#include <iostream>
using namespace std;
class Adder{
public:
// 构造函数
Adder(int i = 0)
{
total = i;
}
// 对外的接口
void addNum(int number)
{
total += number;
}
// 对外的接口
int getTotal()
{
return total;
};
private:
// 对外隐藏的数据
int total;
};
int main( )
{
Adder a;
a.addNum(10);
a.addNum(20);
a.addNum(30);
cout << "Total is " << a.getTotal() << endl;
return 0;
}
运行结果:
Total is 60
上面的类把数字相加,并返回总和。公有成员 addNum 和 getTotal 是对外的接口,用户需要知道它们以便使用类。私有成员 total 是对外隐藏的(即被封装起来),用户不需要了解它,但它又是类能正常工作所必需的。
类的设计策略: 通常而言,要把类的数据成员设计成私有(private),类的函数成员则根据实际需要设计成publice, protected或private。