例如现在在Employee雇员类中有这样的三个简单的方法,其作用分别是返回雇员的名字,返回雇员的薪水以及返回雇员的雇佣日期,具体的定义如下
private String name;
private double salary;
public String getName(){
return name;
}
public double getSalary(){
return salary;
}
public LocalDate getHireDay(){
return hireDay;
}
如果将name、salary和hireDay都标记为public,这样这样来取代我们的独立的访问器方法get方法,会不会很简单呢?关键在于name是一个之读域,一旦在类的构造器中声明完毕之后,就没有任何一个方法能够进行修改,这样就保证了name能够不受外界的影响。
虽然说salary不是之读域,但是它可以用raiseSalary方法来进行修改,如果这个域值一旦出现了错误,那么我们马上就可以定位到这个raiseSalary方法进行检查,如果salary域是一个public域,那么对域值进行修改的操作可能会出现在任何一个地方。
所以说,在有些时候,需要进行设置实例域的域值,就需要以下三个内容:
1、有一个私有的数据域
2、有一个公有的访问器方法
3、有一个公有的修改器方法
这样做虽然要比一个公有的数据域复杂,但是却有着明显的好处。首先,可以改变该类的内部实现,除了该类的方法之外,不会影响其他的代码。