iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
Software Development

30天手把手帶你跟JAVA變成好朋友 系列 第 8

Day8 - 把重要資訊隱藏起來吧 - 物件的封裝

  • 分享至 

  • xImage
  •  

封裝(Encapsulation)是指類別中我們可以透過不同修飾元設定變數的存取,並可以控制類別成員被其他類別存取的範圍,為物件導向程式的三大特性(封裝,繼承,多型)之一。

進行封裝的用意是,把一些隱密或不想被外部存取的變數或方法,藉由不同能見度的修飾元修飾,設定其公開程度。

讓我們來看一下以下的例子,我們寫了一個employee類別,裏頭有四個變數、一個建構元以及方法。

https://ithelp.ithome.com.tw/upload/images/20200921/20128925ESNQ9lvCXE.png

透過getSalary方法可以獲得員工的薪水,所以薪水這個變數應該是不能隨便被偷改的,

假設尚未加上修飾元的情況下,這時候如果有個不懷好意的人,直接繞過getSalary這個方法直接去存取salary變數,將會使系統變得非常非常危險。

https://ithelp.ithome.com.tw/upload/images/20200921/20128925GffJFgUYlK.png

https://ithelp.ithome.com.tw/upload/images/20200921/20128925T4NCjwAHYa.png

那要如何修改呢?

這時候要透過Java中的public、protected、private、default這四個修飾元來對變數進行存取限制。

下圖是這四個修飾元的存取程度。

https://ithelp.ithome.com.tw/upload/images/20200921/20128925CJN3rNiYCj.png
為了預防這個問題,我們可以把程式碼修改成這樣 -
https://ithelp.ithome.com.tw/upload/images/20200921/20128925IwWcTIJIsA.png

將變數設置為private後,不同類別就無法存取該變數,而只能透過getSalary方法來存取。

這時候如果該位不懷好意人士想再偷改薪水時,就會收到無法存取的錯誤訊息囉。

將變數設置為private後,不同類別就無法存取該變數,而只能透過getSalary方法來存取。

這時候如果該位不懷好意人士想再偷改薪水時,就會收到無法存取的錯誤訊息囉。
https://ithelp.ithome.com.tw/upload/images/20200921/20128925HGwAhixmnN.png


Hi, I am Grant.

個人部落格 - https://grantliblog.wordpress.com/
個人網站 - https://grantli-website.netlify.app/#/mainpage
我的寫作專題 - https://vocus.cc/user/5af2e9b5fd89780001822db4#


上一篇
Day7 - 物件的使用-陣列與字串
下一篇
Day9 - 繼承與多型
系列文
30天手把手帶你跟JAVA變成好朋友 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言