面向对象三特性之【封装】

校招时背熟了“封装、继承、多态”,研究过继承和多态的内部运行机制,却忽略了对封装的理解。

最近看Thinking in Java,突然觉得封装特性才是最能体现“面向对象”思想的特性(继承、多态表示对象间[?是?]关系)。


封装,指隐藏属性和实现。

仅公开[必要]的[接口],以便于具体实现的维护。


常见的误区有:

1、数据成员可见性设置为private,并添加getter、setter,就是封装。

>>>这跟public数据成员并无区别。

2、公开的接口提供了多于“必须”的功能。

>>>例如一个[栈]类,必须的功能只有[压栈][出栈];如果提供getByIndex(int index),就有违封装原则,即使栈的存储结构是数组,可以方便地通过index访问。

>>>提供超出必要的功能的坏处在于,画蛇添足......


以下用面向“对象”作说明:

>>>博主的对象无偿帮博主保管全月工资。

>>>聪明的博主给对象提供了一个接口getSalary(),博主和对象幸福地生活着。(仅提供必要接口)

>>>坦诚的博主又给对象提供了几个接口getBaseSalary()+getBonus()+getExtraGains(),对象幸福地生活着。(提供非必要接口)

>>>博主还给了对象这些->_->set/getOffWorkTime()+set/getBackHomeTime()+doHousework(),博主是中国好老公。(提供所有accessor、business method)


你可能感兴趣的:(编程思想)