官术网_书友最值得收藏!

2.1.1 類的封裝性

在操縱汽車時(shí),不會(huì)去考慮汽車內(nèi)部各個(gè)零件如何運(yùn)作的細(xì)節(jié),而只需根據(jù)汽車可能的行為使用相應(yīng)的方法即可,比如只需要知道左打方向盤汽車會(huì)向左轉(zhuǎn),踩剎車車會(huì)停等。它的機(jī)械如何傳動(dòng),有哪些部件在其中起了作用,并不需要關(guān)心,這就是封裝的體現(xiàn)。實(shí)際上,面向?qū)ο蟮某绦蛟O(shè)計(jì)實(shí)現(xiàn)了對(duì)象的封裝,使用戶不必關(guān)心對(duì)象的行為是如何實(shí)現(xiàn),只需要關(guān)心這些對(duì)象能實(shí)現(xiàn)什么。

封裝(Encapsulation)就是把對(duì)象的屬性和行為結(jié)合成一個(gè)獨(dú)立的單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。可以把封裝想象為一個(gè)將代碼和數(shù)據(jù)包起來(lái)的保護(hù)膜,這個(gè)保護(hù)膜定義了對(duì)象的行為,并且保護(hù)代碼和數(shù)據(jù)不被任何其他代碼任意訪問(wèn)和修改。即一個(gè)對(duì)象中的數(shù)據(jù)和代碼相對(duì)于程序的其他部分是不可見(jiàn)的,它能防止那些不希望的交互和非法的訪問(wèn)。封裝有兩個(gè)含義:一是把對(duì)象的全部屬性和行為結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位,對(duì)象的屬性值(除了我們特意留給外部代碼訪問(wèn)的外)只能由這個(gè)對(duì)象的行為來(lái)讀取和修改;二是盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),對(duì)外形成一道屏障,與外部的聯(lián)系只能通過(guò)該類特別留出的與外部交互的方法實(shí)現(xiàn)。圖2-1中的學(xué)生類也反映了封裝性,一個(gè)學(xué)生信息封裝到了一起。

圖2-1 學(xué)生類類圖

封裝的信息隱蔽作用反映了事物的相對(duì)獨(dú)立性,可以只關(guān)心它對(duì)外所提供的接口,即能做什么,而不注意其內(nèi)部細(xì)節(jié),即怎么提供這些服務(wù)。封裝機(jī)制將對(duì)象的使用者與設(shè)計(jì)者分開(kāi),使用者不必知道對(duì)象行為實(shí)現(xiàn)的細(xì)節(jié),只需要用設(shè)計(jì)者提供的外部接口讓對(duì)象去做。例如,用陶瓷封裝起來(lái)的一塊集成電路芯片,其內(nèi)部電路是不可見(jiàn)的,而且使用者也不關(guān)心它的內(nèi)部結(jié)構(gòu),只關(guān)心芯片引腳的個(gè)數(shù)、引腳的電氣參數(shù)及引腳提供的功能,利用這些引腳,使用者將各種不同的芯片連接起來(lái),就能組裝成具有一定功能的模塊。封裝的結(jié)果實(shí)際上隱蔽了復(fù)雜性,從而降低了軟件開(kāi)發(fā)的難度。

對(duì)象是Java封裝的基本單元,是Java程序的基本元素。

主站蜘蛛池模板: 通化县| 遂溪县| 澳门| 墨玉县| 焉耆| 资中县| 阳江市| 临潭县| 嘉祥县| 清原| 榆社县| 新安县| 神木县| 交城县| 威海市| 许昌县| 镇安县| 崇左市| 苗栗市| 阿拉善盟| 瑞昌市| 南靖县| 营山县| 山东省| 罗定市| 鹰潭市| 栖霞市| 砚山县| 沁阳市| 姜堰市| 保定市| 申扎县| 绥宁县| 大同市| 佛冈县| 亚东县| 郓城县| 利辛县| 榆林市| 泗洪县| 浙江省|