每日一问:为啥不使用公有的字段,而使用访问器(getter)方法?
举个例子:
声明对象Employ
public class Employ {
public String name;
public Integer age;
public Employ() {
}
}
对对象中name的参数修改:
public class TestDemo {
public static void main(String[] args) {
Employ employ = new Employ();
String name = employ.name;
name="张三";
System.out.println(name);
name="李四";
System.out.println(name);
}
}
结果:
张三
李四
Process finished with exit code 0
也就是说我要修改对象Employ是随意修该,不需要花太大的代价。
正确的方式:
public class Employ {
private String name;
private Integer age;
public Employ(String name) {
this.name = name;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
}
public class TestDemo {
public static void main(String[] args) {
Employ employ = new Employ("张三");
String name = employ.getName();
System.out.println(name);
}
}
结果:
张三
Process finished with exit code 0
要拿到name的值是要通过getter访问器去取值,这样就不会轻易被外界随意修改了。(例子举的不是太恰当,意思到位就好!)
如果类在包外可以访问,就提供访问器方法,以保留修改该类的内部表示的灵活性。
总而言之,公有类永远不应该暴露可变字段。公有类暴露不可变的字段的危害会小些,但仍然值得怀疑。然而,对于包私有的类或者私有的嵌套类而言,无论字段是可变还是不可变的,有时暴露他们是可取的。
所有文章无条件开放,顺手点个赞不为过吧!