问题描述:定义Person的年龄时,无法阻止不合理的数值被设置进来。
解决方案:用private关键字将需要保护的成员变量进行修饰。
一旦使用了private进行修饰,那么本类当中仍然可以随意访问。
但是!超出了本类范围之外就不能直接访问了!
也是说可以间接访问private成员变量,就是定义一对Getter/Setter方法
规则:
必须叫setXxx或者是getXxx命名规则。
对于Getter来说,不能有参数, 且返回值类型和成员变量对应。
对于Setter来说,不能有返回值,且参数类型和成员变量对应。
例如:
package 类和对象;
public class Demo05 {
public static void main(String[] args) {
Person person =new Person();
person.show();
person.name="赵丽颖";
// person.age = -20; //直接访问private内容,错误写法!
person.setAge(20);
person.show();
}
}
package 类和对象;
public class Person {
String name; //姓名
private int age; //年龄
public void show(){
System.out.println("我叫:"+name+"年龄:"+age);
}
//这个成员方法,专门用于向age设置数据,
public void setAge(int num){
if(num<99 && num>0)
age = num;
else
{
System.out.println("您的年龄不正常");
}
}
//这个成员方法,专门用于获取age数据
public int getAge(){
return age;
}
}
运行结果: