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。
答案 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的值都是无效的。