封裝是物件導向中用來實作資訊隱藏的機制,確保物件的安全,同時也可以保護資料免於不適當的被使用,比如說我設計了一個長方形的類別,可以傳入長寬計算面積,但如果傳入了錯誤的參數(例如負值的邊長),可能導致錯誤,所以如果把資料成員隱藏起來,只提供存取或運算資料成員的函式,讓物件裡面資料的修改,透過函式掌握其值得變化,可以避免產生預期外的值。
就像我們常在 ViewModel 中把 LiveData 封裝起來一樣,在這個 ViewModel 以外的類只能存取到封裝好的 user
,而不能對它原來的 _user
去進行改動。
private var _user = MutableLiveData<List<User>>()
val user: LiveData<List<User>>
get() = _user