【45】java的封装剖析
2016-05-23 22:25
375 查看
类是构造对象的模板或蓝图。
封装的一些概念
从形式上看,封装不过是将数据和行为组合到一个包中,并对对象的使用者隐藏了数据的实现形式。
每个对象都包含实例域和方法。实例域的集合代表了一个集合的状态,通过方法来向对象发送消息,改变对象的状态。封装的意义
实现封装的目的就是不让其他类的方法访问自己的实例域。程序是通过类的方法进行交互。封装给了对象黑盒的特性,这是提高重用性和可靠性的关键。
降低了类之间的耦合性
一个对象无法访问其他的类的对象的数据,所以不对其他的类依赖,降低了耦合性。方便数据域的错误检查
可以直接查找类的相应的方法,而不用排查其他的情况。封装的注意事项:
不要编写返回引用可变对象的访问器方法
举个例子:
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面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!
微信订阅号二维码如下:
相关文章推荐
- Spark学习15之用Maven编译时报 java.lang.OutOfMemoryError: PermGen space异常
- Java之System类的常用方法
- spring的定时任务
- Java基础知识:流程控制
- 错误:Unsupported major.minor version 51.0(jdk版本错误)
- 《java入门第一季》之LinkList模拟桟结构案例
- Java 单例
- JAVA获取同名参数
- Java之块的执行顺序
- 用链表实现栈(Java版)
- Java之实例变量和类变量
- SSO单点登录
- SpringMVC深入理解
- spring 注解注入构造函数
- Java-文件读取写入整型(字节流)
- 二分查找
- SpringMVC学习--springmvc原理
- 深入了解Struts2返回JSON数据的原理及具体应用范例
- JAVA可变长度的参数
- [疯狂Java]集合:Collection的迭代器Iterator、使用Predicate筛选集合中的元素