Java对象集属性默认值

时间:2015-11-08 07:35:16

标签: java

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。

2 个答案:

答案 0 :(得分:2)

首先,修改in `createiPhone': undefined local variable or method `make' for A store having sold 2 products with revenue of $648.00 so far!:AppleStore (NameError) 以使其不公开。然后添加访问器和mutator方法(在mutator中,检查无效值 - 并将其设置为18)。像,

age

然后你可以使用像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

答案 1 :(得分:0)

您正在使用name属性的封装。你可以为年龄做同样的事情。

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

上面的代码将age属性更改为private,以便访问仅限于getter和setter。因此,您还必须添加一个getter方法并更改TestStudent2以使用新的getter和setter。

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