Java面向对象基础——第4关:getter与setter方法

目录

任务描述

相关知识

1. setter方法

2. getter方法

编程要求

测试说明

参考答案


任务描述

本关任务:编写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);
    }
}

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值