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

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

最近看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)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值