目录
任务描述
本关任务:编写Student的getter和setter方法,实现对相应的属性进行合法限制
1.setAge方法,假定合法范围为0-120,不符合此范围内则设置为18
2.setSex方法,判断参数是否为“男”或者“女”,否则设置为:“保密”
相关知识
封装数据,对私有属性进行封装,只是暴露出public方法来访问
1. setter方法
1.可以限制和检验setter方法传入的参数
2.隐藏对象内部数据结构
3.保持对象在每个状态的完整性
2. getter方法
1.按照客户的期望返回格式化数据
2.控制服务的顺序(例如只有当连接建立时getter方法才返回相应实例
一个标准的案例的使用
/**
封装和private的应用:
A:把成员变量用private修饰
B:提高对应的getXxx()和setXxx()方法
*/
//定义学生类
class Student {
//姓名
private String name;
//年龄
private int age;
//姓名获取值
public String getName() {
return name;
}
//姓名设置值
public void setName(String n) {
name = n;
}
//年龄获取值
public int getAge() {
return age;
}
public String getName() {
return name;
}
//年龄赋值
public void setAge(int a) {
age = a;
}
}
//测试类
class StudentTest {
public static void main(String[] args) {
//创建学生对象
Student s = new Student();
//使用成员变量
//错误:被私有修饰了,外界不能直接访问了
//System.out.println(s.name+"---"+s.age);
System.out.println(s.getName()+"---"+s.getAge());
//给成员变量赋值
//s.name = "林青霞";
//s.age = 27;
//通过方法给赋值
s.setName("林青霞");
s.setAge(27);
System.out.println(s.getName()+"---"+s.getAge());
}
}
编程要求
根据提示,在右侧编辑器补充代码,编写Student的getter和setter方法,实现对相应的属性进行合法限制
1.setAge方法,假定合法范围为0-120,不符合此范围内则设置为18
2.setSex方法,判断参数是否为“男”或者“女”,否则设置为:“保密”
测试说明
平台会对你编写的代码进行测试:
测试输入:
李四
无
-12
预期输出: 大家好,我叫:李四,性别:保密,今年:18
开始你的任务吧,祝你成功!
参考答案
package step4;
public class Student {
private int age;
private String name;
private String sex;
// ---------------------Begin------------------------
public int getAge() {
return age;
}
public void setAge(int age) {
if (age <0 || age >120)
this.age = 18;
else{
this.age = age;
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
if(sex.equals("男") || sex.equals("女")){
this.sex = sex;
}
else {
this.sex = "保密";
}
}
// ---------------------End------------------------
@Override
public String toString() {
return String.format("大家好,我叫:%s,性别:%s,今年:%d", this.name, this.sex,this.age);
}
}