再說“對象”這個國度,淺說封裝

“比較”啰嗦~。~

? ? ? ? 自上次剛剛理解了面向?qū)ο蟮乃枷胫?,自己也漸漸形成了自己的面向?qū)ο蟮乃悸?,然而,知識的世界何其浩瀚,有思路也才只是個開始。那面向?qū)ο缶头路疬@篇符號世界 的一片大陸,那么我們的探索就從這片大陸開始。

? ? ? ?在面向?qū)ο筮@片大陸上,有著三個巨大的過度,他們統(tǒng)治著這里的無數(shù)符號子民。這三個國度分別是:封裝、繼承、多態(tài)。

? ? ? 那么首先我們今天就來講講面向?qū)ο蟮姆庋b。下面分兩種介紹比較:

一、Python 類的封裝

? ? ?1.Python中類的講解是我們上次講的內(nèi)容,一句話概括就是:在面向?qū)ο蟮拇箨懮?,各種各樣的數(shù)據(jù)橫行霸道,于是,封裝“帝國”站了出來,他們提出了“類”的說法,然后將各種具有相似性質(zhì)的數(shù)據(jù)進(jìn)行了分類,隨后放在了不同的地方。這就是最簡單的類了。

? ? ? 2.網(wǎng)上的資料都是把類說成抽象化 的一個概念,是將抽象得到的數(shù)據(jù)和行為(或功能)相結(jié)合,形成一個有機(jī)的整體(即類);我相信大部分都不會聽的太懂。所以我在這里將它們給你人化一下。理解起來或許就沒那么難了。

? ? ? “封裝”既然能成一個帝國,肯定有它們的過人之處,他的帝國能夠穩(wěn)固存在也肯定是有他的原因的。那么,在他的帝國之下,有著千千萬萬的子民,如果只是按照相似的類型放一塊的話,那肯定是要出問題的,所以,“封裝”就想出了一個神奇的辦法,讓所有子民有自己的空間,有自己的私有權(quán)限,想共享知識就共享,不想共享就不給你看。想看也得先告訴我我才能讓你看。于是,這個國度就變得秩序起來。這里我們說的就是類的公有屬性,和私有屬性了。

? ? ? ? 那么形象化講起來很容易理解,現(xiàn)在就要回到知識上了。在其他語言中,類中的屬性共有和私有可能是用Public ,Private來表示的。而我們學(xué)習(xí)的是Python,在Python中表示的就跟他們不一樣了。下面我們以幾行簡單的代碼的對比來演示:

? ? ?在這里我們是定義了一個最簡單的“人”的類,定義了名字和年齡的屬性,相信細(xì)心的你們一定會發(fā)現(xiàn)定義的兩個屬性前面都有一個雙下劃線,那么,我想說,恭喜你們,你們已經(jīng)發(fā)現(xiàn)了封裝的最重要的一點(diǎn)。

? ? 這里的雙下劃線“__”其實(shí)就是類似于其他類似Java語言中的Private 的關(guān)鍵字,說明這里的屬性是私有的,如果別人不通過“特殊手段”訪問的話,是沒辦法訪問的。就彷如“封裝”那個國度中每個人都會有自己的存錢罐兒,如果別人想問你存錢罐兒里面有多少錢,你肯定是不會說的吧!畢竟這是私有資產(chǎn),除非咱倆是非常要好的朋友或者有親戚關(guān)系的話,我才會告訴你這些信息,給你說要通過特殊方法才能看到里面有多少錢。

? ? 上一段中我還提到 了特殊手段,?這里的特殊手段其實(shí)就是兩方商量好 的特殊方法,通俗來說就是"保險箱的密碼",那么在Python中來說就真的 是特殊方法。

? ? ?細(xì)心的人還會發(fā)現(xiàn),每個屬性下面都還定義了一個相關(guān)的方法,一個是set_**,一個是get_**。這個就是Python中私有屬性 的訪問方法了。

? ? ?所以,拿專業(yè)點(diǎn)的說法就是:封裝的目的是增強(qiáng)安全性和簡化編程,使用者不必了解具體的實(shí)現(xiàn)細(xì)節(jié),而只是要通過外部接口,一特定的訪問權(quán)限來使用類的成員。

? ? 當(dāng)然,類不可能只有成員屬性,這一類東西肯定不止是一些特征的集合,肯定還會有自己的方法。所以說,類也能定義自己的方法。類的方法定義類似與他的函數(shù)定義,所以,只要把他的方法當(dāng)做函數(shù)來理解定義即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容