• 条款22 :将成员变量声明为private


    首先看看为什么成员变量不该是public的,然后让你看看所有反对public成员变量的论点同样适用于protected成员变量。最后导出一个结论,所有的成员变量都应该是private的。

    一.语法一致性。如果成员变量不是public的,那么所有的访问成员变量,都变成了函数,所以就不存在是不是有括号的问题了。

    二.使用成员函数会让你对成员变量有更加精确的控制。因此你可以设计出“不准访问(不写对应此成员的函数)”,“只读访问(const)”,“读写访问”。

    三.封装。如果你通过函数访问成员变量,日后,当你想用某个计算替换这个成员变量,而class客户一点也不知道class的内部实现已经起了变化。

    成员变量的封装性与“成员变量的内容改变时所破坏的代码数量”成反比。所谓改变,也许是从class中移除它。

    假设我们有一个public成员变量,而我们最终要出取消它。多少代码会被破坏掉呢?

    所有使用它的代码都会被破坏,所以public成员变量完全没有封装性。假设是一个protected变量呢?所有使用它的子类都会被破坏。

    请记住:

    • 切记将成员变量声明为private。这可赋予客户访问数据的一致性、可细微划分访问控制、允许约束条件获得保证,并提供class作者以充分的实现弹性。
    • Protected并不比public更具有封装性。
  • 相关阅读:
    【Web】JavaScript 语法入门
    tar 和gzip 的区别
    状态码,好记
    PyCharm与git/GitHub取消关联
    在Ubuntu下安装deb包需要使用dpkg命令
    linux每日命令(4):解压命令
    Python之os.path.join()
    Python的JAVA胶水——jpype
    python之chardet验证编码格式
    python之arrow时间处理模块
  • 原文地址:https://www.cnblogs.com/loveyakamoz/p/2772413.html
Copyright © 2020-2023  润新知