问题描述:定义Person的年龄时,无法阻止不合理的数值被设置进来。
解决方案:用private关键字将需要保护的成员变量进行修饰。
一旦使用了private进行修饰,那么本类当中仍然可以随意访问。
但是!超出了本类之外就不能再直接访问了。
间接访问private成员变量,就是定义一对 Getter / Setter 方法
必须叫setXxx或者是getXxx命名规则。
对于基本类型当中的boolean值,Getter方法一定要写成isXxx的形式,而setXxx规则不变。
示例代码:
public class Person {
String name;
private int age;
public void show(){
System.out.println("我叫:" + name + ",年龄:" + age);
}
public void setAge(int num){
if (num < 100 && num >= 9){
age = num;
}else {
System.out.println("数据不合理!");
}
}
public int getAge(){
return age;
}
}
public class Demo03Person {
public static void main(String[] args) {
Person person = new Person();
person.show();
person.name = "赵丽颖";
person.setAge(-20);
person.show();
}
}
练习使用private关键字来定义学生类:
public class Student {
private String name;
private int age;
private boolean male;
public void setMale(boolean b){
male = b;
}
public boolean isMale() {
return male;
}
public void setName(String str){
name = str;
}
public String getName(){
return name;
}
public void setAge(int num){
age = num;
}
public int getAge(){
return age;
}
}
public class Demo04Student {
public static void main(String[] args) {
Student stu = new Student();
stu.setName("鹿晗");
stu.setAge(20);
stu.setMale(true);
System.out.println("姓名:" + stu.getName());
System.out.println("年龄:" + stu.getAge());
System.out.println("是不是爷们:"+ stu.isMale());
}
}
执行结果: