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

// 条款22: 将成员变量声明为private
// 1. 切记将成员变量声明为private。这可赋予客户访问数据的一致性、可细微划分
// 访问控制、允诺约束条件保证,并提供class坐着以充分的实现弹性。
// 2.protected并不比public更具封装性。

// 3.首先是语法的一致性,当客户访问成员变量时,不用考虑直接访问变量,还是通过函数来访问,
// 在java中就有这样的麻烦,因为其中有些对象既定义了length字段,又定义了length()函数,
// 客户访问起来就很迷惑。所以为了一致性将所有的成员变量都private,如果访问,就进行getter和setter。

// 4.从封装的角度来谈,将成员变量隐藏在函数接口背后,可以为“所有可能的实现”提供弹性。
// 例如在一个类似getter函数中可以返回一个成员变量,但是如果逻辑改变了,可以返回加工计算后
// 的其他值,否则直接使用成员变量,那么就会导致其他使用了它的代码都需要进行修改。
// public 修饰成员变量意味着不封装,不封装意味着不可改变,不可改变因为改变导致大量的代码破坏。
// 对于protected成员变量,也是这样,如果我们有一个protected成员变量,而最终取消了它,那么使用
// 它的derived class都会被破坏掉。
// 所以说将一个成员声明为public或protected而客户开始使用它,就很难改变那个成员变量所涉及的一切。
// 因为有太多的代码,文档,测试等等需要改变。

// 5.所以从封装的角度来说,其实只有两种访问权限:private(提供封装)和其他(不提供封装)。

// 6.成员变量的封装性与“成员变量的内容改变时所破坏的代码数量”成反比。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值