09-封装

2019-11-10  本文已影响0人  ducktobey

封装

成员变量私有化,提供公共的getter和setter给外界去访问成员变量

例如以下一段代码

struct Person {
    int m_age;
};

int main() {
    Person person;
    person.m_age = 10;
    getchar();
    return 0;
}

声明了一个Person类,然后就可以创建一个person对象,通过对象,可以直接访问person对象的成员变量。为什么可以直接访问,在前面章节[类与对象]也已经提到过,这样做其实是右问题的。因为如果成员变量公开的话,就无法阻止使用者不规范使用该类。比如使用者可以将年龄设置为负数person.m_age = -4,这样对m_age赋值明显是不合理的,因为年龄不可能为负数,所以为了过滤掉不合理的值,一般将成员变量私有化,不允许外界直接赋值

为了方便外界对成员变量赋值,因此在创建类时,需要提供公共的方法,供外界setter方法设置成员变量值与getter获取成员变量值值,在setter里面,可以过滤掉外面传进来的不合理的值,在getter里面,可以获取成员变量的值,类似于这样的操作,如果你有过面向对象的开发经验,一定不会陌生

struct Person {
private:
    int m_age;
public:
    void setAge(int age) {
        if (age <= 0) {
            return;
        }
        m_age = age;
    }

    int getAge() {
        return m_age;
    }
};

int main() {
    Person person;
    person.setAge(10);
    int age = person.getAge();
    getchar();
    return 0;
}

这就是面向对象中,针对封装的简单介绍。

demo下载地址

文章完。

上一篇 下一篇

猜你喜欢

热点阅读