例子:

private Date birthDay;

public Date getBirthDay(){

  return birthDay;

}

 

上段代码会破坏封装性!为什么?用什么方式好?

这样封装有些时候会间接的修改属性birthDay。

使用对象的clone方法就不会破坏封装性。

public Date getBirthDay(){

  return birthDay.clone();

}

 

Java核心技术卷一给出的解释:如果需要返回一个可变对象的引用,应该首先对它进行克隆(clone)。对象clone是指存放在另一个位置上的的对象副本。

此文对此解释到位,详情:http://blog.chinaunix.net/uid-26434689-id-3241005.html

此文的评论很好,详情:http://bbs.csdn.net/topics/240007740

posted on 2017-09-25 10:52  Devil、倾洋  阅读(518)  评论(0编辑  收藏  举报