zoukankan      html  css  js  c++  java
  • 条款22 :将成员变量声明为private

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

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

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

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

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

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

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

    请记住:

    • 切记将成员变量声明为private。这可赋予客户访问数据的一致性、可细微划分访问控制、允许约束条件获得保证,并提供class作者以充分的实现弹性。
    • Protected并不比public更具有封装性。
  • 相关阅读:
    Android安卓 _“Activity"_01+简单的拨号器
    Android安卓 “内部类”
    我的第一天 Andorid “hello_world”
    Android sqlite 创建数据库
    Sqlite(代码 jabc)
    判断网络状态
    Android sqlite(jdbc)
    Android 单机事件的使用
    JAVA内部类(成员.局部.匿名)
    我的第一个Android程序
  • 原文地址:https://www.cnblogs.com/loveyakamoz/p/2772413.html
Copyright © 2011-2022 走看看