為了讓實例變量的值能夠在需要的時候改變,我們應該提供一個方法來改變其值; 這種方法被特別地稱為 存取方法(Access method)。依照慣例,只是簡單的用來改變實例變量值的方法名稱應該以 "set" 開頭:
void setBark(String barkSound) {
this.barkSound = barkSound;
}
上例中的方法很有意思,它對兩個不同的變量用了同一個名字 barkSound。首先,作為參數定義的barkSound 是一個新的叫聲(barking sound)。在此方法中所有對 barkSound 的沒有限定的引用都指的是這個作為參數傳入的數據。但是,我們還有一個為每個被初始化的狗(dog)提供的實例變量 barkSound。在Java(TM) 中,我們可以用特別的 "實例句柄(instance handle)" this 來指定 Dog 的當前實例。因此,
this.barkSound = barkSound;
語句將實例變量 (this.barkSound 的當前值改變成 setBark() 的參數 (barkSound)傳入的新值。
為了更明白地說明 this 變量,假訂我們為 Dog 創建了一個實例叫 fido,然後執行 fido的方法 setBark()
fido.setBark("Ruff.");
在setBark() 中的this 就是指 fido,更確切地說,this.barkSound 指的就是對象 fido 的 barkSound 實例變量。
在 DogChorus 的下面版本中,創建了一個對象 fido,將它的 barking 特征從默認的 "Woof." 改變為 "Ruff.",然後調用 barking 行為:
public class DogChorus {
public static void main(String[] args) {
Dog fido = new Dog();
fido.setBark("Ruff.");
fido.bark();
System.exit(0);
}
}
經過這種修改,象 fido 這樣的對象,其特征就可以由實例(狀態)變量的當前值和 Dog 中方法所定義的行為一起來反映