用Java写代码采用封装对自己的年龄输入是否合理进行判断
时间: 2024-09-20 20:06:10 浏览: 42
在Java中,通过封装可以创建一个包含私有属性和公共访问方法的对象,以便控制数据的访问。对于年龄这样的敏感信息,合理的做法是将其设置为私有,然后提供一个getter方法获取它的值,同时提供一个setter方法设置年龄。这样做既保证了数据的安全性,又允许外部代码进行验证。
例如,你可以创建一个名为`Person`的类:
```java
public class Person {
private int age; // 私有变量,表示年龄
// 构造函数,防止直接赋值
public Person() {
this.age = 0;
}
// Getter方法,获取年龄
public int getAge() {
return age;
}
// Setter方法,设置年龄,并添加逻辑进行合理性判断
public void setAge(int age) {
if (age >= 0 && age <= 150) { // 假设最大年龄为150岁
this.age = age;
} else {
throw new IllegalArgumentException("年龄超出合理范围");
}
}
}
```
这样,当你尝试设置年龄时,如果输入不合理(比如负数或超过150岁),程序会抛出异常,表明输入不合理。这是对用户输入进行合理性的检查,符合封装的原则。
相关问题
「需求及设计思路」在上一个实验中,学生类创建的对象的年龄是可以随便赋值的,如果将age的值赋值为-30,显然违背了事实。为了解决这类问题,我们需要对类进行封装,防止外界对类中的成员变量随意访问。为了让同学们更好的掌握封装的概念,本实验将使用private关键字对成员变量name和age进行私有化,同时分别提供一个setName(String n)和setAge(int a)方法用于外界的访问,其中setAge(int a)中需要对age进行判断。 1) 编写测试类,将属性age的值设为-30,演示不合理现象。 2) 对Student类进行修改,将name和age属性使用private修饰,然后定义getName()、setName(String n)、getAge()和setAge(int a)四个对外访问name和age的方法。 3) 在setAge(int a)方法中对传入的参数进行检查,如果输入值为负数,则打印出“设置的年龄不合法”,如果不为负数,才将其设置为age属性的值。 4)对测试类进行修改,在main()方法中创建Student类的实例对象,通过调用对象的setName(String n)和setAge(int a)方法来设置的name属性和age属性值,并调用speak()方法。
1)测试类代码:
```java
public class Test {
public static void main(String[] args) {
Student s = new Student();
s.age = -30; // 不合理的赋值
s.speak();
}
}
```
输出结果:年龄:-30 名字:null
2)修改后的Student类代码:
```java
public 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 void setAge(int a) {
if (a < 0) {
System.out.println("设置的年龄不合法");
} else {
age = a;
}
}
public void speak() {
System.out.println("年龄:" + age + " 名字:" + name);
}
}
```
3)修改后的测试类代码:
```java
public class Test {
public static void main(String[] args) {
Student s = new Student();
s.setName("小明");
s.setAge(-30); // 不合理的赋值
s.speak();
}
}
```
输出结果:设置的年龄不合法 年龄:0 名字:小明
阅读全文