09-封装

作者: ducktobey | 来源:发表于2019-11-10 23:23 被阅读0次

封装

成员变量私有化,提供公共的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下载地址

文章完。

相关文章

  • 09-封装

    封装 成员变量私有化,提供公共的getter和setter给外界去访问成员变量 例如以下一段代码 声明了一个Per...

  • 09-封装

    写在前面 名词解释 码上建功 装逼一下 完整代码demo,请移步GitHub:DDGLearningCpp 当然C...

  • #09-手势识别(拖动,旋转,捏合)#

    09-手势识别(拖动,旋转,捏合)

  • 2018-01-19-这是一个图片上传库

    可以用简书创建图片库 HSTS重定向08 HSTS重定向09-缓存

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171123(58/60) 【幸福...

  • iOS学习笔记10-UIView动画

    上次学习了iOS学习笔记09-核心动画CoreAnimation,这次继续学习动画,上次使用的CoreAnimat...

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171125(60/60) 【幸福...

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171122(57/60) 【幸福...

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171124(59/60) 【幸福...

  • 幸福实修

    早上好!#幸福实修#~每天进步1%#幸福实修12班-09-唐洁--富阳# 20171030(35/60) 【幸福三...

网友评论

      本文标题:09-封装

      本文链接:https://www.haomeiwen.com/subject/fbrzbctx.html