为了解决安全的问题
一个属性如果设置public是很危险的,如将人的身高属性设为-1,大家都知道人的身高不能使负值,但对于一个public的属性来说,你无法阻止其他类的胡作非为
用get()与set()控制变量。
如果get()和set()方法里面只放一个赋值语句的话,和public变量应该没什么区别。
但是设想,如果变量score代表的是一个学生的数学成绩,理论上,分数只可能是0-100的整数,如果把将score设为public,不用get()和set(),那么用户很可能会输入1-100以外的数字,如果把将score设为privata,再用setScore()来设置分数,就完全可以控制这种行为了。
比如
setAge(int age){
if(age<1||age>120)
throw new Exception(” 你输入的年龄不合法”);
}else{
this.age=age;
}
==============================================================================================
public class Person{
public int height;
}
public class Main{
public static void main(String[] args) {
Person p = new Person();
p.height=-1;
}
}
get set 好处
public class Person{
private int height;
public void setHeight(int height){
public int getHeight() {
return height;
}
public void setHeight(int height) {
if(height<=0){
System.err.println(“s身高不能是负值”+height);
return;
}
this.height = height;
}
}
public class Main{
public static void main(String[] args) {
Person p = new Person();
//p.height=-1;因为属性设置成private,所以p.height=-1;
p.setHeight(-1);
}
}