在我们定义一个类的时候,如果我们直接定义成员变量,例如:
public class Person{
int age;
}
此时我们从其他类中需要使用age是,可以直接随意赋值,这就存在一个问题,假设age是人类的年龄,显然age有一个取值范围,但是此时如果我们在其它类中访问:
public class Test{
public static void main(String[] args){
Person person = new Person();
person.age = 1000;
System.out.println(person.age);//1000
}
}
显然此时age就成了1000,这是不合理的,所以就引出了封装的概念,那么什么是封装呢或者说封装可以实现那些目的
1、封装可以隐藏实现的细节
2、让使用者只能通过实现写好的访问方法来访问这些字段,这样一来我们只需要在这些方法中增加逻辑控制,限制对数据的不合理访问、
3、方便数据检查,有利于于保护对象信息的完整性
4、便于修改,提高代码的可维护性
为了实现良好的封装,需要从两个方面考虑
1、把字段(成员变量)和实现细节隐藏起来,不允许外部直接访问
2、把方法暴露出来,让方法控制这些成员变量进行安全的访问和操作
封装使用private关键字,具体代码如下:
public class Person {
private int age;
// 利用getter方法获取age
public int getAge() {
return age;
}
// 利用setter方法设置age
public void setAge(int age) {
if(age > 120 || age < 0){
System.out.println("数据不合理");
} else{
this.age = age;
}
}
}
调用方法如下:
public static void main(String[] args) {
Person person = new Person();
person.setAge(1000);//设置年龄为1000,显然不合理
System.out.println(person.getAge());//数据不合理 0(为默认值)
}