封裝(Encapsulation)是指類別中我們可以透過不同修飾元設定變數的存取,並可以控制類別成員被其他類別存取的範圍,為物件導向程式的三大特性(封裝,繼承,多型)之一。
進行封裝的用意是,把一些隱密或不想被外部存取的變數或方法,藉由不同能見度的修飾元修飾,設定其公開程度。
讓我們來看一下以下的例子,我們寫了一個employee類別,裏頭有四個變數、一個建構元以及方法。
透過getSalary方法可以獲得員工的薪水,所以薪水這個變數應該是不能隨便被偷改的,
假設尚未加上修飾元的情況下,這時候如果有個不懷好意的人,直接繞過getSalary這個方法直接去存取salary變數,將會使系統變得非常非常危險。
那要如何修改呢?
這時候要透過Java中的public、protected、private、default這四個修飾元來對變數進行存取限制。
下圖是這四個修飾元的存取程度。
為了預防這個問題,我們可以把程式碼修改成這樣 -
將變數設置為private後,不同類別就無法存取該變數,而只能透過getSalary方法來存取。
這時候如果該位不懷好意人士想再偷改薪水時,就會收到無法存取的錯誤訊息囉。
將變數設置為private後,不同類別就無法存取該變數,而只能透過getSalary方法來存取。
這時候如果該位不懷好意人士想再偷改薪水時,就會收到無法存取的錯誤訊息囉。
Hi, I am Grant.
個人部落格 - https://grantliblog.wordpress.com/
個人網站 - https://grantli-website.netlify.app/#/mainpage
我的寫作專題 - https://vocus.cc/user/5af2e9b5fd89780001822db4#