java的封装剖析

来源:互联网 发布:本地连接阿里云数据库 编辑:程序博客网 时间:2024/06/03 22:48

类是构造对象的模板或蓝图。

封装的一些概念

从形式上看,封装不过是将数据和行为组合到一个包中,并对对象的使用者隐藏了数据的实现形式。

每个对象都包含实例域和方法。实例域的集合代表了一个集合的状态,通过方法来向对象发送消息,改变对象的状态。

封装的意义

实现封装的目的就是不让其他类的方法访问自己的实例域。 
程序是通过类的方法进行交互。封装给了对象黑盒的特性,这是提高重用性和可靠性的关键。

降低了类之间的耦合性

一个对象无法访问其他的类的对象的数据,所以不对其他的类依赖,降低了耦合性。

方便数据域的错误检查

可以直接查找类的相应的方法,而不用排查其他的情况。

封装的注意事项:

不要编写返回引用可变对象的访问器方法

举个例子:

class Emplyee{    private Date day;    public Date getDay(){        return day;    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

上面的例子破坏了封装性

Emplyee harry;Date d = harry.getDay();d.setTime(new Date(););
  • 1
  • 2
  • 3

出错的原因

d和day引用的是一个对象。对d改变。对象的私有实例域也会改变。

如何避免:

返回一个可变对象引用的克隆。

class Emplyee{    private Date day;    public Date getDay(){        return day.clone();    }}
原创粉丝点击