【笔记】Java核心技术卷1-第四章_对象与类

4.3.6 封装

Date 对象是可变的,这一点就破坏了封装性!

Employee harry = . . 
Date d = harry.getHi reDayO; 
double tenYearsInMilliSeconds = 10 * 365.25 * 24 * 60 * 60 * 1000; 
d.setTime(d.getTime() - (long) tenYearsInMilliSeconds); 
// let's give Harry ten years of added seniority 

出错的原因很微妙。d 和 harry.hireDay 引用同一个对象。
对d调用更改器方法就可以自动改变这个雇员对象的私有状态。

如果需要返回一个可变对象的引用, 应该首先对它进行克隆(clone)。对象 clone 是 指存放在另一个位置上的对象副本。

return (Date) hireDay.clone();

4.4.1 静态域

private static int nextld = 1 

只有一 个静态域 nextld。即使没有一个雇员对象, 静态域 nextld 也存在。它属于类,而不属于任何 独立的对象。

猜你喜欢

转载自blog.csdn.net/Ethan_997/article/details/108398723