getters
,setters
方法(Accessor methods
)是JAVA中的基本用法。顾名思义,是对数据进行设置和获取。通常的使用规范是先定义一个private
变量,然后为这个私有变量添加公有的setXX()
和getXX()
方法。例如:
1
2
3
4
5
6
7private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
那为什么不直接定义为公有的 public String name;
变量呢?
在stackoverflow上发现有人提出了同样的问题why-use-getters-and-setters。
其实,Accessor methods
相当于在调用者和对象属性间添加了一层逻辑层,可以进行访问权限控制和逻辑判断等,实现面向对象编程中封装性和信息隐藏。
可以方便在这setter
方法中 限制和验证setter
方法传入的参数,可以因此对象内部的数据结构,保持对象在每个状态的完整性。在getter
中可以按需要返回格式化的数据。
例如:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22private String name;
private String firstName;
public void setName(String name){
this.name = name;
}
public String getName() {
return firstName + name;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
if(firstName==null){
System.out.println("不正确的姓");
}else{
this.firstName = firstName;
}
}