【中低階級】-[物件導向]-三大特性-封裝

閱讀時間約 7 分鐘
上一篇有分享物件導向的物件(Object)、類別(Class)、欄位(Field)、屬性值(Property)、方法(Method)還有一個建構式函式(Construstor)的概念,接下來會跟大家分享的就是物件導向的特性,它有封裝、繼承、多型這三大特性,先來分享一下封裝是怎麼一回事。

一、封裝(Encapsulation)

封裝就是把一些功能的處理程序或是資料包起來,也對於程式碼做權限的設定做一層保護的機制,這是為了防止程式碼被竄改,所以有了封裝可以保障我們資料的隱密性,甚至封裝也是一種將一些處理程序隱藏起來,讓使用者使用時可以更加單純。

1.什麼意思?

如同我們電腦開機,以前DOS時代電腦開機可能就需要做很多指令或是動作才能開機,現在只要按電源鍵電腦就會自動幫你開機到桌面的畫面或是到帳戶登入密碼的畫面,中間過程中我們使用者就可以不用管內部處理是怎麼運行的,這部分也就稱為「封裝」。
那麼電腦使用時會有一個或多個使用者帳戶,這就是去控制電腦一些檔案對於使用者的權限,哪些檔案是可以存取、哪些檔案是唯讀的相關權限的設定,這部分也算是「封裝」在做的事。

2.在程式中通常在哪裡會看到它?

當你看到修飾詞Public、Private、Protected這些的時候,就是封裝的作用出來了。直接來看程式,每個動作結果都會使用label來顯示狀況。
主程式程式內容
此程式的意思就是:
(我們假裝先對於封裝按鈕視為電源鍵)

當我們按下電源鍵,它就會觸發啟動這個程式,它就會去找到Computer這個類別,去new一個物件出來命名為pc,接著往下執行相關程式去做pc.Act()這個動作,再往下就是屬於封裝的權限使用狀況。(權限使用狀況待會兒再說明)
我們再來看一下主程式要使用類別的程式內容
Computer類別的程式內容
由於主程式一開始new完去建立好一個類別後,第一個要使用這個類別的就是pc.Act()這個動作,因此程式就會跳到Computer這個類別中,找到Act這個方法(黃框)去執行裡面的內容。
我們這邊就用pcAct這個訊息來代表執行開機狀態吧~執行完就會回主程式繼續執行下一行動作,那麼我們就先來看一下結果(先看第一行橘色框就好)
執行結果
是不是就是我們在Computer類別中做Act這個動作的訊息對吧!
這個就是封裝,主程式只要做Act()那麼內部就會幫我們處理好該做的事,我們只要等待收結果就好了!

3.「權限問題」與「Get/Set使用差別」

封裝還有另外一個特性就是權限問題:第一個就是修飾詞(可以到【入門級】-[資料型別]-修飾詞複習一下有哪些),第二個就是get / set使用
這邊先說一下Get 和Set差別:
Get是取得內容值
(當主程式未給予值的時候,就會使用內部class類別給予的初始值)

Set是設定內容值
(當有賦予值的時候,就會去設定這個值,
倘若前面多了修飾詞,如:private set這樣的話,就代表主程式不可以修改,只能讀取)
我們直接來看程式,首先看一下主程式中,從顯示「電腦的動作」這邊開始說明:
主程式(顯示使用class的修飾詞與get/set差別)
Computer類別(顯示使用class的修飾詞與get/set差別)
由主程式為主來一行行說明:
第一行顯示字串說明用途而已,由程式執行結果的橘色框下一行看起)

第二行:增加顯示pc.Action 這個值
那麼pc.Action就是跑到類別中取得Action的值,看到類別的Action程式,它做的事情就是設定或更改內容值

因為主程式的第二行是直接進行pc.Action取值,所以程式只有執行get{return pcAction;} 直接取得類別給予的初始值,也就是「提供內容值」,故傳到主程式去就是「提供內容值」這樣的內容,可以對照上面程式執行的結果。

第三行:就是主程式要去設定Action的值為「開機」,因此使用pc.Action,程式就會進入到類別的Action中執行set{pcAction=value;}去設定。
執行前pcAction的值為「提供內容值」,value的值為「開機」。
執行後,value的值給予pcAction,因此pcAction的值就會更改為「開機」,value的值依然為「開機」。

第四行:增加顯示pc.Action 這個值
pc.Action一樣也會跑到類別中取得Action的值,也只有執行get{return pcAction;},此時的pcAction的值已經更新為「開機」,因此傳到主程式去的值就是「開機」,故程式執行解果所顯示的就會是「開機」。
主程式再往下看下一段顯示電腦名稱的部分,對照程式執行結果就要看最後一小段的部分
第一行:顯示字串說明用途

第二行:增加顯示pc.Name 這個值
一樣也是跑到類別中從get{...}取得初始值為「橙果杏」。

第三行:想要設定pc.Name的值 (會錯誤)
這邊為什麼會錯誤?是因為一樣也是要跑到類別中從set{...}設定值,但是!! set前面有加一個修飾詞private(私有的),這代表僅提供已讀模式不可被修改,也就是做保護資料內容值的意思。因此在主程式中想要給予值是不可行的,也就會出現錯誤。

第四行:因為值未修改,所以它就會跟第二行出現的值一樣呈現「橙果杏」(這邊程式執行結果並沒有執行這行,想要知道可以自行操作看看ㄛ)
主程式看到最後一行,也就是pc.password;
一樣也是使用類別中的password,但是這邊無論是方法還是內容值的設定,由於在類別中對於password它是屬於private(私有的),因此主程式不可使用也不可唯讀,也就是隱藏狀態,主程式根本不會知道有這個存在的意思。
所以經過這樣的分享有沒有懂一點什麼是封裝了呢?
這邊在跟大家統整一下,封裝就是功能性打包,有些內容值可以做隱藏、唯讀、修改的處理,保護資料的安全性(使用get / set再配合修飾詞的方法即可)。那麼主程式在使用的時候就會比較容易簡單,只要叫某某class去做ABC的事,那麼主程式只要等結果就好,內部處理就可以不管它。

這邊再提一個當要做修改內容值還可以使用「建構函式」使用方法如下:
主程式(類別使用建構函式)
類別(使用建構函式)))
執行結果(類別使用建構函式)
首先我們先看ComputerFunction的類別,電腦的動作、電腦的名稱這兩段跟Computer的類別一樣都不動,多了一個建構函式(黃框部分),這邊就是讓主程式使用的時後必須放入的參數,也就是需要設定的內容值,從主程式傳進來此類別中。主程式想要取得值可以運用剛剛的方法再從此類別中取得。
再回來看主程式的部分,當觸發後(也就是button按鈕按下去)
第一行:除了new一個物件為pc2外,後面還會跟著小跟班各種參數
這邊就是讓主程式要去設定參數的部分。接著建立完物件後,就會到pc2這類別中執行此類別的建構函式,然而裡面執行的動作就是將取得的setaction、setname內容值給予此類別內部的pcAction、pcName變數。

第二行、第四行:這邊取得的值也是會跑到pc2這個類別中執行get{...},那麼由於一開始我們已經設定參數的內容值,這邊也是會取得一樣的值。看執行結果就知道啦~

為什麼會看到廣告
20會員
43Content count
Hello~ Welcome to my blog~❤ 這邊會分享我在程式這條道路中的學習與成長, 過程中從而了解自己的不足,再學習。 希望透過分享的方式, 也讓正在學習程式的夥伴們一起學習, 我們一起加油吧~ 「彼此都會成為彼此之間的影響力」(´,,•ω•,,)♡ ❣
留言0
查看全部
發表第一個留言支持創作者!
橙果杏的沙龍 的其他內容
  物件導向(Object Oriented Programming,又稱OOP),在程式領域中很常會看到一些英文代稱,如果不懂的話就比較會不知道在說些什麼,所以除了知道中文名稱外也要稍微知道一下它的代稱是什麼會比較好唷! 一、什麼是物件導向?   把程式寫出來的功能集合成一個類別(class),接
亂數是要做什麼用的?生活中其實有很多有關亂數的事,例如說:樂透摸彩、抽籤、驚喜包、中獎者、擲骰子等等都是跟亂數有關哦!它們都是將所有的數都丟進去一個空間裡再隨機抽取,在不重複的狀況下每一個數抽到的機率都是一樣的。 在程式中也有這個玩法哦!但是說是這麼說到底怎麼用,咱們來看看: 語法: 在隨機抽取的時
資料集中除了陣列這個外,還有另一個好幫手就是List,它跟陣列很像,我們直接來看一下怎麼用: 它的語法: 1.給予值 (1)單一新增: (2)陣列式新增: 例子: 2.取值 (1)foreach迴圈方式 (2)單一取值 3.取得List有多少個內容值 4.排序 想要反轉就再使用↓ 5.插入 6.複製
陣列運用、擷取字串   對於陣列裡的內容值除了把資料存進去外,若想要知道陣列維度、陣列大小、複製陣列的值到另一個陣列中、清除陣列的值等等的相關處理,甚至比較常用到的可能還需要做資料排列、查找資料等等,此時C#有一些屬性方法可以幫助到我們,不用寫複雜的迴圈,來看一看有哪些吧~
  陣列就陣列怎麼還有不規則陣列呢?一維陣列就一排沒什麼大問題,但是!二維以上的多維陣列不知道有沒有發現大家的長度都是一致的?用三維來說組合起來的箱子不是四邊形,就是長(正)方體,那麼不規則陣列組合起來就不一定是完整的長(正)方體了,可能就會出現東缺一腳、西缺一角的情形發生,我們用三維的圖形來表示:
上一篇的一維陣列是指一排箱子,二維陣列就會往上疊變成兩排箱子,那麼三維呢?並不是再往上疊三排箱子就是三維而是又多了後面深度,也就是三個維度。用圖示: 這樣有比較懂嗎?!沒關係!之前用箱子,那現在用數學來說明好了, 一維是x軸(長度) 二維是xy軸(長度+高度) 三維是xyz軸(長度+高度+深度) 四
  物件導向(Object Oriented Programming,又稱OOP),在程式領域中很常會看到一些英文代稱,如果不懂的話就比較會不知道在說些什麼,所以除了知道中文名稱外也要稍微知道一下它的代稱是什麼會比較好唷! 一、什麼是物件導向?   把程式寫出來的功能集合成一個類別(class),接
亂數是要做什麼用的?生活中其實有很多有關亂數的事,例如說:樂透摸彩、抽籤、驚喜包、中獎者、擲骰子等等都是跟亂數有關哦!它們都是將所有的數都丟進去一個空間裡再隨機抽取,在不重複的狀況下每一個數抽到的機率都是一樣的。 在程式中也有這個玩法哦!但是說是這麼說到底怎麼用,咱們來看看: 語法: 在隨機抽取的時
資料集中除了陣列這個外,還有另一個好幫手就是List,它跟陣列很像,我們直接來看一下怎麼用: 它的語法: 1.給予值 (1)單一新增: (2)陣列式新增: 例子: 2.取值 (1)foreach迴圈方式 (2)單一取值 3.取得List有多少個內容值 4.排序 想要反轉就再使用↓ 5.插入 6.複製
陣列運用、擷取字串   對於陣列裡的內容值除了把資料存進去外,若想要知道陣列維度、陣列大小、複製陣列的值到另一個陣列中、清除陣列的值等等的相關處理,甚至比較常用到的可能還需要做資料排列、查找資料等等,此時C#有一些屬性方法可以幫助到我們,不用寫複雜的迴圈,來看一看有哪些吧~
  陣列就陣列怎麼還有不規則陣列呢?一維陣列就一排沒什麼大問題,但是!二維以上的多維陣列不知道有沒有發現大家的長度都是一致的?用三維來說組合起來的箱子不是四邊形,就是長(正)方體,那麼不規則陣列組合起來就不一定是完整的長(正)方體了,可能就會出現東缺一腳、西缺一角的情形發生,我們用三維的圖形來表示:
上一篇的一維陣列是指一排箱子,二維陣列就會往上疊變成兩排箱子,那麼三維呢?並不是再往上疊三排箱子就是三維而是又多了後面深度,也就是三個維度。用圖示: 這樣有比較懂嗎?!沒關係!之前用箱子,那現在用數學來說明好了, 一維是x軸(長度) 二維是xy軸(長度+高度) 三維是xyz軸(長度+高度+深度) 四
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
如果你曾凌虐身邊的低階眾生,那麼,你要有心理準備,因為總有一天他們會轉生為人,被殺生者來索命,被凌虐者來找麻煩,不管你逃到天涯海角,或是能逃過今生,終究要償還業報。 我在這裡所說的低階眾生,不只是指困在畜牲色身的狗貓牛羊魚蝦,也指那些剛剛從畜牲道,轉生為人的弱勢族群。
Thumbnail
日本人享有世界公認的健康長壽生活,背後隱藏著一系列的生活和飲食習慣。 研究表明,僅僅遵循一項特定的飲食習慣就能使死亡率降低15%。 那麼,是什麼秘密讓日本人能夠健康長壽呢? 以下是揭開日本人健康長壽的六個秘密。 ### 1. 高攝取海鮮 日本是一個島國,海鮮是日本飲食中的重要組成部分。 富含
Thumbnail
*歐元區商業疲軟 增加了經濟衰退的可能性 *美禁令影響 中國CSP高階AI伺服器明年出貨比低於4% *10月工業生產指數連17黑 製造業表現兩樣情 *10月批發零售業營業額降0.9% 零售、餐飲業則表現亮眼
Thumbnail
     此書用較為詼諧嬉鬧的手法呈現劇情。講述為了調查起獲貪贓枉法的三江口盧局長失蹤案,而從中央空降神探來辦案的張一昂刑警,如何在人生地不熟又敵我不明的情況下,能急中生智、吉星高照、否極泰來,乍看不按牌理出牌或恣意妄為,卻能接連破獲重大刑案,擄獲眾人信任的推理喜劇。  
Thumbnail
談到面試這件事,我可能真的有很多甘苦談可以分享給大家。發表《面試不成的12個原因(上)最好是不符所需啦!》及《面試不成的12個原因(下)被當分母了》兩篇文章後,受到不少的關注,我決定再來分享跟面試有關的三個彩蛋。 面試是每個上班族都會遇到的。本文這三個彩蛋,或許你可以稱之為經典、離譜、不專業⋯⋯
Thumbnail
近期巨大展延票期風暴,引發市場關注庫存與現金流問題。 11/23法說會,巨大稱,雖然中低階車銷售緩、零件堆高,但中高階車仍強,且中國解封、市場復甦,有望消化中低階車款。 下半年中低階車搶貨潮不再,毛利率、營益率同降;中高階車則面臨零組件缺貨、出貨不順,無法回到2018年常態。
Thumbnail
重點先行: Ebike鍊條技術門檻高,前三季年增30%,搭配chainring可組自行車系統、合併銷售。高階品成長動能看好。 從傳統零件製造商,到佈局品牌服務,目前在歐洲、北美有多間銷售據點搶市,有品牌護城河。 原物料、匯率不利因素淡化,助推毛利率。但中低階產品庫存修正持續,需留意後市。
Thumbnail
因為有部分讀者可能沒跟上個人的思路,所以再寫此篇完整交代個人這波低價純銀行股思考過程的轉折。 首先,不管節奏是否跟上,都請不用擔心,低價純銀行股個人一直以臺企銀、遠東銀為例子的主因,在於節奏即使不同,反應時間都會相當充足,不會有那種差個一天,就有天堂地獄之別的情況發生。
Thumbnail
當我們的靈識經過「隔陰之迷」,六識七識的記憶被完全清空後,從出生的那一刻起,我們就已經是低階肉身的「奴隸」了。 因為,人類童年期的「五蘊」,都是以「生物層次」本能架構起來的「意識作業平台」,等到了青少年和成年,大部分凡夫就會因此產生「身見我執」...
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
如果你曾凌虐身邊的低階眾生,那麼,你要有心理準備,因為總有一天他們會轉生為人,被殺生者來索命,被凌虐者來找麻煩,不管你逃到天涯海角,或是能逃過今生,終究要償還業報。 我在這裡所說的低階眾生,不只是指困在畜牲色身的狗貓牛羊魚蝦,也指那些剛剛從畜牲道,轉生為人的弱勢族群。
Thumbnail
日本人享有世界公認的健康長壽生活,背後隱藏著一系列的生活和飲食習慣。 研究表明,僅僅遵循一項特定的飲食習慣就能使死亡率降低15%。 那麼,是什麼秘密讓日本人能夠健康長壽呢? 以下是揭開日本人健康長壽的六個秘密。 ### 1. 高攝取海鮮 日本是一個島國,海鮮是日本飲食中的重要組成部分。 富含
Thumbnail
*歐元區商業疲軟 增加了經濟衰退的可能性 *美禁令影響 中國CSP高階AI伺服器明年出貨比低於4% *10月工業生產指數連17黑 製造業表現兩樣情 *10月批發零售業營業額降0.9% 零售、餐飲業則表現亮眼
Thumbnail
     此書用較為詼諧嬉鬧的手法呈現劇情。講述為了調查起獲貪贓枉法的三江口盧局長失蹤案,而從中央空降神探來辦案的張一昂刑警,如何在人生地不熟又敵我不明的情況下,能急中生智、吉星高照、否極泰來,乍看不按牌理出牌或恣意妄為,卻能接連破獲重大刑案,擄獲眾人信任的推理喜劇。  
Thumbnail
談到面試這件事,我可能真的有很多甘苦談可以分享給大家。發表《面試不成的12個原因(上)最好是不符所需啦!》及《面試不成的12個原因(下)被當分母了》兩篇文章後,受到不少的關注,我決定再來分享跟面試有關的三個彩蛋。 面試是每個上班族都會遇到的。本文這三個彩蛋,或許你可以稱之為經典、離譜、不專業⋯⋯
Thumbnail
近期巨大展延票期風暴,引發市場關注庫存與現金流問題。 11/23法說會,巨大稱,雖然中低階車銷售緩、零件堆高,但中高階車仍強,且中國解封、市場復甦,有望消化中低階車款。 下半年中低階車搶貨潮不再,毛利率、營益率同降;中高階車則面臨零組件缺貨、出貨不順,無法回到2018年常態。
Thumbnail
重點先行: Ebike鍊條技術門檻高,前三季年增30%,搭配chainring可組自行車系統、合併銷售。高階品成長動能看好。 從傳統零件製造商,到佈局品牌服務,目前在歐洲、北美有多間銷售據點搶市,有品牌護城河。 原物料、匯率不利因素淡化,助推毛利率。但中低階產品庫存修正持續,需留意後市。
Thumbnail
因為有部分讀者可能沒跟上個人的思路,所以再寫此篇完整交代個人這波低價純銀行股思考過程的轉折。 首先,不管節奏是否跟上,都請不用擔心,低價純銀行股個人一直以臺企銀、遠東銀為例子的主因,在於節奏即使不同,反應時間都會相當充足,不會有那種差個一天,就有天堂地獄之別的情況發生。
Thumbnail
當我們的靈識經過「隔陰之迷」,六識七識的記憶被完全清空後,從出生的那一刻起,我們就已經是低階肉身的「奴隸」了。 因為,人類童年期的「五蘊」,都是以「生物層次」本能架構起來的「意識作業平台」,等到了青少年和成年,大部分凡夫就會因此產生「身見我執」...