「需求及设计思路」在上一个实验中,学生类创建的对象的年龄是可以随便赋值的,如果将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()方法。
时间: 2023-06-11 14:08:43 浏览: 177
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 名字:小明
阅读全文