【45】java的封装剖析
2016-05-23 22:25
429 查看
类是构造对象的模板或蓝图。
封装的一些概念
从形式上看,封装不过是将数据和行为组合到一个包中,并对对象的使用者隐藏了数据的实现形式。
每个对象都包含实例域和方法。实例域的集合代表了一个集合的状态,通过方法来向对象发送消息,改变对象的状态。封装的意义
实现封装的目的就是不让其他类的方法访问自己的实例域。程序是通过类的方法进行交互。封装给了对象黑盒的特性,这是提高重用性和可靠性的关键。
降低了类之间的耦合性
一个对象无法访问其他的类的对象的数据,所以不对其他的类依赖,降低了耦合性。方便数据域的错误检查
可以直接查找类的相应的方法,而不用排查其他的情况。封装的注意事项:
不要编写返回引用可变对象的访问器方法
举个例子:
class Emplyee{ private Date day; public Date getDay(){ return day; } }
上面的例子破坏了封装性
Emplyee harry; Date d = harry.getDay(); d.setTime(new Date(););
出错的原因
d和day引用的是一个对象。对d改变。对象的私有实例域也会改变。如何避免:
返回一个可变对象引用的克隆。class Emplyee{ private Date day; public Date getDay(){ return day.clone(); } }
欢迎入群:
公众号IT面试题汇总讨论群
如果扫描不进去,加我微信(rdst6029930)拉你。
扫我微信二维码加我
欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!
微信订阅号二维码如下:
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树