iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
自我挑戰組

JAVA的實作與應用系列 第 24

Day 24 Encapsulation

  • 分享至 

  • xImage
  •  

物件導向程式設計有三大特性:封裝、繼承、多型,今天要來介紹封裝。
封裝顧名思義就是把屬性封在類別裡面,不讓外界隨意存取類別的屬性,
意思就是說只有同個類別的方法可以存取被封裝的屬性。而封裝需要用到
Private,Private跟Public的差別如下:
public:所有類都可以存取
private:只能在它自己的類中存取

所以說,封裝後的資料會是隱藏的,如果有必要存取,要用getter、setter
getter:返回對象的狀態
setter:為對象的狀態設置一個值
例如:getX() 和getY() 是getter; setX() 和 setY() 是 setter。
以下有一個範例:將昨天得程式範例用封裝來實作

Step1 先把宣告的函數全部private起來
https://ithelp.ithome.com.tw/upload/images/20211006/20140456YMiNv3IsWW.png

Setp2 用getter將每個物件get()起來,並return回原本宣告的物件名稱,如下圖所示。
https://ithelp.ithome.com.tw/upload/images/20211006/20140456ioeGI7VXjG.png

Step3 用setter將每個物件set(),方法如下。
https://ithelp.ithome.com.tw/upload/images/20211006/201404560bllMc4vYV.png

Step4 將main方法裡面要用到封裝過的物件用class名稱 . set物件名稱(),來取得封裝過的物件。
https://ithelp.ithome.com.tw/upload/images/20211006/20140456lVXjSr0j5g.png

Step5 area比較特別,因為他要使用到前面的height跟base來乘,所以set完area後,後面要get() area 跟 height,才可以執行乘的動作,如下圖所示。
https://ithelp.ithome.com.tw/upload/images/20211006/20140456Y4x8hyzB6z.png

Step6 最後get area 印出來。
https://ithelp.ithome.com.tw/upload/images/20211006/201404563QSsZRPd6o.png

程式執行結果和昨天一樣
https://ithelp.ithome.com.tw/upload/images/20211006/201404560dygsH1LYp.png

程式全碼如下
https://ithelp.ithome.com.tw/upload/images/20211006/20140456f4O5qO6Sv0.png

https://ithelp.ithome.com.tw/upload/images/20211006/201404562lxEgnTuIu.png


上一篇
Day 23 Object oriented programming
下一篇
Day 25 constructors、this、static
系列文
JAVA的實作與應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言