今天看Think in java,在看到方法调用的别名问题时,想到老师说要用get,set方法替代域的直接调用,想来还是很有好处的。
如下:
class Letter{
char c;
}
public class PassObject{
static void f(Letter letter){
letter.c='z';
}
public static void mian(String[] args){
Letter l = new Letter();
l.c = 'a';
System.out.println("l.c:" + l.c);
f(l);
System.out.println("l.c" + l.c);
}
}
其输出的结果为:
lc:a
lc:z
当在进行复制操作时,可能有很多地方都可以修改函数的值,当发现有错误的时候,你很难确定它是在什么地方别修改的,可读性不太好。
而如果使用get,set方法则复制操作使用set方法,当值发生改变的时候,必然会在set函数中发生,可读性更好,更安全。