控制對年齡的修改,年齡只能為大于等于 0 并且小于等于 120 的值
public class OOTest03 {
public static void main(String[] args) {
//創建一個對象
Student zhangsan = new Student();
/*
zhangsan.id = 1001;
zhangsan.name = "張三";
zhangsan.sex = true;
zhangsan.address = "北京";
zhangsan.age = 20;
*/
zhangsan.setId(1001);
zhangsan.setName("張三");
zhangsan.setSex(true);
zhangsan.setAddress("北京");
zhangsan.setAge(-20);
System.out.println("id=" + zhangsan.id);
System.out.println("name=" + zhangsan.name);
System.out.println("sex=" + zhangsan.sex);
System.out.println("address=" + zhangsan.address);
System.out.println("age=" + zhangsan.age);
}
}
class Student {
//學號
int id;
//姓名
String name;
//性別
boolean sex;
//地址
String address;
//年齡
int age;
//設置學號
public void setId(int studentId) {
id = studentId;
}
//讀取學號
public int getId() {
return id;
}
public void setName(String studentName) {
name = studentName;
}
public String getName() {
return name;
}
public void setSex(boolean studentSex) {
sex = studentSex;
}
public boolean getSex() {
return sex;
}
public void setAddress(String studentAddress) {
address = studentAddress;
}
public String getAddress() {
return address;
}
public void setAge(int studentAge) {
北京動力節點 http://www.dabaquan.cn
9
if (studentAge >=0 && studentAge <=120) {
age = studentAge;
}
}
public int getAge() {
return age;
}
}
從上面的示例,采用方法可以控制賦值的過程,加入了對年齡的檢查,避免了直接操縱 student
屬性,這就是封裝, 封裝其實就是封裝屬性,讓外界知道這個類的狀態越少越好。以上仍然
不完善,采用屬性仍然可以賦值,如果屏蔽掉屬性的賦值,只采用方法賦值,如下:
public class OOTest04 {
public static void main(String[] args) {
//創建一個對象
Student zhangsan = new Student();
zhangsan.id = 1001;
zhangsan.name = "張三";
zhangsan.sex = true;
zhangsan.address = "北京";
zhangsan.age = 20;
/*
zhangsan.setId(1001);
zhangsan.setName("張三");
zhangsan.setSex(true);
zhangsan.setAddress("北京");
zhangsan.setAge(20);
*/
/*
System.out.println("id=" + zhangsan.id);
System.out.println("name=" + zhangsan.name);
System.out.println("sex=" + zhangsan.sex);
System.out.println("address=" + zhangsan.address);
System.out.println("age=" + zhangsan.age);
*/
System.out.println("id=" + zhangsan.getId());
System.out.println("name=" + zhangsan.getName());
System.out.println("sex=" + zhangsan.getSex());
System.out.println("address=" + zhangsan.getAddress());
System.out.println("age=" + zhangsan.getAge());
}
}
class Student {
//學號
private int id;
//姓名
private String name;
//性別
private boolean sex;
//地址
private String address;
//年齡
private int age;
//設置學號
public void setId(int studentId) {
id = studentId;
}
//讀取學號
public int getId() {
return id;
}
public void setName(String studentName) {
name = studentName;
}
public String getName() {
return name;
}
public void setSex(boolean studentSex) {
sex = studentSex;
}
public boolean getSex() {
return sex;
}
public void setAddress(String studentAddress) {
address = studentAddress;
}
public String getAddress() {
return address;
}
public void setAge(int studentAge) {
if (studentAge >=0 && studentAge <=120) {
age = studentAge;
}
}
public int getAge() {
return age;
}
}
以上采用 private 來聲明成員變量,那么此時的成員變量只屬于 Student,外界無法訪問,這
樣就封裝了我們的屬性,那么屬性只能通過方法訪問,通過方法我們就可以控制對內部狀態
的讀取權利。
封裝屬性,暴露方法