



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
封装是指隐藏对象的属性和实现细节,仅仅对外公开接口。封装能为软件系统带来以下优点:1:便于正确方便的理解和使用系统,防止使用者错误修改系统的属性。以供电系统为例,过去房屋隔壁的上方都是电线,现在的房屋电线都看不见了,在墙壁上只露出一些电源插口,为啥要把电线隐藏起来呢?理由很简单,暴露在外面的电线既不安全也不美观。再比如电视剧系统,尽管本身的实现很复杂,但用户很方便,电视剧的实现细节都被藏在壳子里面,没有必要向用户公开。2:有助于建立各个系统之间的松耦合关系,提供系统的独立性。当一个系统的实现发送变化时,只要它的接口不变,就不会影响其他的系统。3:提供软件的可重用性,每个系统都是一个相对独立的整体,可以在多种环境下得到重用。例如,干电池就是独立的,它可以在手电筒,相机中都能发挥作用。4:降低构建大型系统的风险,即使整个系统不成功,个别独立的系统可能仍然有价值。例如相机坏了,里面的电池还是有用的,还可以安装到手电筒中。在java面向对象编程语言中,主要是通过访问控制机制来进行封装,这种机制能控制对象的属性和方法的可访问性。在Java中提供了以下四种访问控制级别。l public:对外公开,访问级别最高l protected:只对同一个包中的类或者子类公开l 默认:只对同一个包中的类公开。l private:不对外公开,只能在对象内部访问,访问级别最低。灵活运用这四种访问级别可以有效的控制对象的封装程度,那么到底哪些对象的属性和法应该公开,哪些应该隐藏呢?这必须具体分析,下面是封装的两个大致原则:1:把尽可能多的东西藏起来,对外提供简捷的接口 系统的封装度越高,那么它的独立性就越高,而且使用起来越方便,例如半自动洗衣机HalfAutoWasher和全自动洗衣机AutoWasher就是个明显的例子。以下程序演示的是半自动洗衣机的过程。HalfAutoWasherwasher=newHalfAutoWasher();/开始洗衣服washer.on();/开机/洗涤washer.inputWater();/放水washer.setTimer(5);/定时5分钟washer.wash();/洗涤washer.dischargeWater();/排水/第一次清洗washer.inputWater();/放水washer.setTime(5);/定时5分钟washer.wash();/洗涤washer.dischargeWater();/排水/第二次清洗washer.inputWater();/放水washer.setTime(5);/定时5分钟washer.wash();/洗涤washer.dischargeWater();/排水/为衣服脱水washer.setTime(8);/定时八分钟washer.dehydrate();/脱水washer.off();/关机以下程序演示全自动洗衣机洗衣服的过程。AutoWasherwasher=newAutoWasher();/开始洗衣服washer.on();/开机washer.setMode(标准模式);/设置洗衣机模式washer.start();/开始洗衣服,洗衣结束后,30分钟内洗衣机会自动关机对比以上代码,可以看出全自动洗衣机封装了进水,排水和定时等洗衣服的细节,为使用者提供了更加简单易用的接口,所以用全自动洗衣机洗衣服更方便。2:把所有的属性藏起来假如某种属性允许外界访问,那么提供访问该属性的公开方法,假如电视剧有个音量属性volume,这是允许使用者访问的。使用者通过setVolume()和getVolume()方法来访问这个属性。privateintvolume;/*设置音量*/publicvoidsetVolume(intvolume) this.volume=volume;/*查看当前音量*/publicintgetVolume() return volume;为什么volume属性要设置为public呢?其实这样做有以下原因:(1)更符合真实世界中外因通过内因起作用的客观规律,一个对象的属性发生变化应该是外因和内因共同作用的。外因就是使用者可以向电视机发送消息,请求调解音量。内因就是电视机本身有音量控制装置来调解音量。(2)能够灵活的控制属性的读和修改的访问级别。对象的有些属性只允许使用者读,但不允许使用者修改,而只有内部对象才能修改,例如电表的用电度数。(3)防止使用者错误的修改属性。例如银行账号Account对象有一个密码口令,当用户设置密码口令时,要求密码必须是6位数。如下所示:publicvoidsetPassword(String password)if(password=null|password.length()!=6)thrownewIllegalArgumentException(口令不合法);elsethis.password=password;(4)有助于对象封装实现细节,有时候,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时间管理大师课件
- 电子商务员培训
- 孤独症家长培训
- 二零二五年生物科技股权三方转让及产品研发协议
- 二零二五年度高速公路设施维护合同
- 二零二五年度农业设施拆迁补偿合同模板
- 2025版遗产继承遗产评估协议-确保价值公平评估
- 二零二五年度房屋施工土地征用与拆迁补偿合同范本
- 2025版房地产投资居间服务纠纷解决合同范本
- 2025版商业综合体餐饮窗口特许经营合同范本
- 2017-2022年高考英语浙江卷七选五试题真题及答案汇编
- GB/T 2794-2022胶黏剂黏度的测定
- YB/T 117-1997高炉用耐火材料抗渣性试验方法
- GB/T 4744-2013纺织品防水性能的检测和评价静水压法
- GB/T 41365-2022中药材种子(种苗)白术
- GB/T 31717-2015病媒生物综合管理技术规范环境治理蚊虫
- 展台搭建施工及展会服务方案
- 水利工程设计变更表格
- 上海交通大学学生生存手册
- 罗兰贝格斯伦贝谢组织及管控标杆研究
- 收益还原法课件
评论
0/150
提交评论