通常情况下我们可以在测试类中给成员变量赋值一些合法但不合理的数据,而程序的执行过程无法检测和提示,与我们现实生活中的实际应用不太符合,为此,我们需要对成员变量进行合理的封装,与测试。
如下示例:
public class Person{
public String name;
public int age;
}
当我们在另一个类中创建一个Person对象,由于Person类的变量修饰符为public,即所有类均可访问。
public class Test01
{
public static void main(String[]args){
Person person = new Person;
person.name = "张三";
person.age = -10;
System.out.println("姓名:"+person.name+"年龄:"+person.age);
}
}
程序运行结果为:
姓名:张三年龄:-10
年龄为负数,在现实生活中是不存在的,但程序的执行过程也无法检测,因此,我们要进行封装
public class Person{
//封装第一步,私有化成员变量,使用private关键字修饰
private String name;
private int age;
//提供共有的get成员方法和set成员方法
public String getName(){
//get 方法获取属性值
return name;
}
//set 方法赋值
public void setName(String name1){
name = name1;
}
public int getAge(){
return age;
}
public void setAge(int age1){
if(age < 0){
System.out.println("赋值失败,年龄不可能为负数");
}else{
age = age1;
}
}
}
封装完成后编写代码
public class Test01
{
public static void main(String[]args){
Person person = new Person;
//person.name = "张三";
//person.age = -10;
//此时这两行代码已无法使用
String name1 = "李四";
person.setName(name1);
System.out.println("姓名:"+person.getName);
int age1 = -10;
person.setAge(age1):
System.out.println("年龄:"+person.getAge);
}
}
此时程序运行结果为
姓名:李四
赋值失败,年龄不可能为负数
进行封装有几个步骤:
1、私有化成员变量,用private关键字修饰
2、提供共有的get成员方法和set成员方法,在方法体中进行合理判断
3、在构造方法中调用set成员方法进行合理的判断
使用得当,可以大大提高编写代码的效率。