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);
    }
}


如何通过将数据封装添加到AStudent属性来增强类age。如果输入的age无效,我要打印一条错误消息并将年龄设置为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);


您可以通过覆盖toString中的AStudent来简化显示,例如

@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);

10-08 13:31