[英]Java Object set attribute default
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
。 如果輸入的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);
您可以通過在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);
您正在對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 的值都是無效的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.