使用 setter 或 getter 實現約束

Setters 和 Getters 允許物件包含可以通過限制訪問和更改的私有變數。例如,

public class Person {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        if(name!=null && name.length()>2)
           this.name = name;
    }
}

在這個 Person 類中,有一個變數:name。可以使用 getName() 方法訪問此變數並使用 setName(String) 方法更改,但是,設定名稱要求新名稱的長度大於 2 個字元且不為 null。使用 setter 方法而不是將變數 name 公開允許其他人設定 name 的值具有某些限制。這同樣適用於 getter 方法:

public String getName(){
   if(name.length()>16)
      return "Name is too large!";
   else
      return name;
}

在上面修改的 getName() 方法中,只有當 name 的長度小於或等於 16 時才返回 name。否則,返回 Name is too large。這允許程式設計師建立可訪問且可修改但他們希望的變數,從而防止客戶端類不必要地編輯變數。