JAVA封装的使用细节
- 一般使用private访问权限
- 为了让其他的类可以使用这些属性提供相应的get和set方法
public class DatailOfPackaging {
public static void main(String[] args) {
Human1 h = new Human1();
h.age = 14; //报错,无法访问
h.setAge(14);
}
}
class Human1{
private int age; //设置私有属性
private String name;
public void setAge(int age) { //设置set方法给私有属性赋值
this.age = age;
}
public int getAge() { //设置get方法获取属性的值
return this.age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
其实只要把属性的访问控制符设置为public就可以在别的类里访问和修改Human类的属性了,为什么还要写一个set方法来设置类的属性呢?
其实有了set方法后,我们就可以对赋给属性的值做一些判断,例如当设置年龄属性的时候,如果把年龄设置为负数,就可以通过添加判断语句来控制。
class Human1{
private int age;
private String name;
public void setAge(int age) {
if(age < 0) {
System.out.println("年龄不能为负数!!!");
}else {
this.age = age;
}
}
public int getAge() { //设置get方法获取属性的值
return this.age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
通过把属性设为私有,暴露一个方法,来实现对属性的访问控制
在主函数里设置和获取类的属性
public static void main(String[] args) {
Human1 h = new Human1();
h.setAge(14);
h.setName("xiaoming");
System.out.println(h.getAge()+" "+h.getName());
}
在eclipse中可以自动生成set和get方法,要注意的一点就是对于bool类型的值,不是写get方法而是写is