class AStudent {
private String name;
public int age;
public void setName(String inName) {
name = inName;
}
public String getName() {
return name;
}
}
public class TestStudent2 {
public static void main(String s[]) {
AStudent stud1 = new AStudent();
AStudent stud2 = new AStudent();
stud1.setName("Chan Tai Man");
stud1.age = 19;
stud2.setName("Ng Hing");
stud2.age = -23;
System.out.println("Student: name="+stud1.getName()+
", age=" + stud1.age);
System.out.println("Student: name="+stud2.getName()+
", age=" + stud2.age);
}
}
如何通过向 age
属性添加数据封装来增强 AStudent
类。如果输入的年龄
无效,我想打印一条错误消息并将年龄设置为18。
最佳答案
首先,修改age
,使其不公开。然后添加访问器和修改器方法(在修改器中,检查无效值 - 并将其设置为 18)。比如,
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
if (age < 0) {
System.err.println("Invalid age. Defaulting to 18");
age = 18;
}
this.age = age;
}
然后你可以将它与 setName
之类的东西一起使用
stud1.setAge(19);
和
stud2.setAge(-23);
您可以通过覆盖 AStudent
中的 toString
使其更容易显示,例如
@Override
public String toString() {
return String.format("Student: name=%s, age=%d", name, age);
}
然后您可以打印您的 AStudent
实例,例如
System.out.println(stud1); // <-- implicitly calls stud1.toString()
System.out.println(stud2);
关于Java对象设置属性默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33591750/