C++重要性质01:封装(Encapsulation)

来源:互联网 发布:销售数据分析怎么写 编辑:程序博客网 时间:2024/06/08 14:30

     序:大学四年浑浑噩噩,光阴虚度;值此毕业之际,如梦方醒;然亦无所悔恨,既有所悟,惟勤勉耳。近来研习《深入浅出MFC》,受益良多,故而摘抄一二,置此博文之中,以备不时翻阅。小子不才,无所增益,学而践之而已。此文摘自《深入浅出MFC》第二章C++的重要性质。

    【 类别及其成员--封装】

      如果我们把世界视为一个由对象(object)所组成的大环境,则任何实际物体都可以认为是对象。为了描述对象,应该把对象的属性描述出来。在C++这个大环境中,给「对象的属性」一个比较学术的名词,就是「类别」(class)。

       对象的属性,即类别,有两大成员,一是数据,一是行为。在面向对象的术语中,前者常被称为性质property),后者常被称为方法(method)。另有一对比较像程序设计领域的术语,名为成员变量membervariable)和「成员函数」(member function)。

      如果以CSquare 代表「四方形」这种类别,假定四方形有颜色(color)、可以展示(display)。这里color 就是一种成员变量,display 就是一种成员函数:
       CSquare square;       // 声明square 是一个四方形
       square.color = RED; // 设定成员变量,RED 代表一个颜色值
       square.display();       // 调用成员函数

      下面是C++ 语言对于CSquare 的描述:
       class CSquare          // 以C 作为类别名称的开头
       {
        private:
              int m_color;        // 通常以m_ 作为成员变量的名称开头
        public:
              void display() { ... }
              void setcolor(int color) { m_color = color; }
       };

       成员变量可以只在类别内被处理,也可以开放给外界处理。以数据封装的目的而言,自然是前者较为妥当,但有时候也不得不开放。为此,C++ 提供了private、public 和protected 三种修饰词。一般而言成员变量尽量声明为private,成员函数则通常声明public。上例的m_color 既然声明为private,我们势必得准备一个成员函数setcolor()供外界设定颜色用。
      把数据声明为private,不允许外界随意存取,只能通过特定的接口来操作,这就是面向对象的封装(encapsulation)特性。

0 0
原创粉丝点击