Java对象集属性默认值

Java对象集属性默认值,java,Java,如何通过向age属性添加数据封装来增强类AStudent。如果输入的age无效,我想打印一条错误消息并将age设置为18。您正在对name属性使用封装。对于年龄,你也可以这样做 class AStudent { private String name; public int age; public void setName(String inName) { name = inName; } public String getName()

如何通过向
age
属性添加数据封装来增强类
AStudent
。如果输入的
age
无效,我想打印一条错误消息并将age设置为18。

您正在对
name
属性使用封装。对于年龄,你也可以这样做

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);
    }
}
class-AStudent{
// ...
私人互联网;
公共无效设置(整数){
这个。年龄=年龄;
if(年龄<1岁){
这个。年龄=年龄;
}
}
}
上面的代码将
age
属性更改为private,从而限制getter和setter的访问。因此,您还必须添加一个getter方法并更改
TestStudent2
以使用新的getter和setter


什么使年龄无效?上述代码假定任何小于1的值都是无效的。

首先,修改
age
,使其不公开。然后添加accessor和mutator方法(在mutator中,检查无效值-并将其设置为18)。大概

class AStudent {
    // ...
    private int age;
    public void setAge(int age) {
        this.age = age;
        if (age < 1) {
            this.age = age;
        }
    }
}

您可以通过在
AStudent
中覆盖
toString
使其更易于显示

stud2.setAge(-23);
然后您可以打印您的
AStudent
实例,如

@Override
public String toString() {
    return String.format("Student: name=%s, age=%d", name, age);
}

System.out.println(stud1);//<代码>java!=javascript
非常感谢。现在我可以做到了。非常感谢。现在我可以做到了。
stud2.setAge(-23);
@Override
public String toString() {
    return String.format("Student: name=%s, age=%d", name, age);
}
System.out.println(stud1); // <-- implicitly calls stud1.toString()
System.out.println(stud2);