在CashCard類別中,除了定義儲值用的store方法之外,你還考慮到扣款用的charge方法,以及兌換紅利點數的exchange方法。在類別中定義方法,如果不用傳回值,方法名稱前可以宣告void。
同樣地,charge與exchange方法也分別封裝了扣款以及兌換紅利點數的流程。為了知道兌換紅利點數後,剩餘的點數還有多少,exchange必須傳回剩餘的點數值,方法若會傳回值,必須於方法前宣告傳回值的型態。
若你想封裝類別私有資料,讓使用者無法直接存取,而必須透過你提供的操作方法,經過你定義的流程才有可能存取私有資料,事實上,使用者也無從得知你的類別中有哪些私有資料,使用者不會知道物件的內部細節。
特定的封裝意圖,主要就是隱藏物件細節,將物件當作黑箱進行操作。就如先前的範例,使用者會呼叫建構式,但不知道建構式的細節,使用者會呼叫方法,但不知道方法的流程,使用者也不會知道有哪些私有資料,要操作物件,一律得透過你提供的方法呼叫。
private也可以用在方法或建構式宣告上,私有方法或建構式通常是類別內部某個共用的演算流程,外界不用知道私有方法的存在,而且也可以用在內部類別宣告。