- Java面向?qū)ο筌浖_(kāi)發(fā)
- 姚駿屏 汪衛(wèi)星主編
- 775字
- 2018-12-29 19:04:14
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程序的基本元素。
- Mastering OpenLayers 3
- Apache ZooKeeper Essentials
- The Android Game Developer's Handbook
- Photoshop智能手機(jī)APP UI設(shè)計(jì)之道
- 前端跨界開(kāi)發(fā)指南:JavaScript工具庫(kù)原理解析與實(shí)戰(zhàn)
- OpenNI Cookbook
- Windows Server 2016 Automation with PowerShell Cookbook(Second Edition)
- 從0到1:Python數(shù)據(jù)分析
- SQL基礎(chǔ)教程(第2版)
- Java面向?qū)ο蟪绦蛟O(shè)計(jì)
- Android驅(qū)動(dòng)開(kāi)發(fā)權(quán)威指南
- Swift語(yǔ)言實(shí)戰(zhàn)晉級(jí)
- Java并發(fā)編程:核心方法與框架
- Simulation for Data Science with R
- Building Business Websites with Squarespace 7(Second Edition)