封裝、繼承和多態(tài)d

封裝、繼承和多態(tài)d

ID:39164960

大?。?54.42 KB

頁數(shù):18頁

時間:2019-06-26

封裝、繼承和多態(tài)d_第1頁
封裝、繼承和多態(tài)d_第2頁
封裝、繼承和多態(tài)d_第3頁
封裝、繼承和多態(tài)d_第4頁
封裝、繼承和多態(tài)d_第5頁
資源描述:

《封裝、繼承和多態(tài)d》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、面向?qū)ο笕筇卣鳎ǚ庋b、繼承、多態(tài))詳解?封裝封裝是面向?qū)ο蟮奶卣髦?,是對象和類概念的主要特性。封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。比如人這個客觀事物可以采用如下方式封裝:人{姓名(特征)年齡(特征)性別(特征)做事(行為)走路(行為)說話(行為)}上面是對客觀事物人的具體描述,用類封裝后轉(zhuǎn)化為:classPerson{stringname;//數(shù)據(jù):姓名intage;//數(shù)據(jù):年齡boolsex;//數(shù)據(jù):性別voidDo(){}//方法:做事情voidWalk(){}//方法:走路voidS

2、ay(){}//方法:說話}采用類來描述客觀事物的過程就是一種封裝,類可以看成一種封裝手段,其實是對客觀事物的一種抽象。類成員采用訪問級別來控制讓可信的其他類進行操作,對不可信的進行信息隱藏。加上訪問級別修飾符(標為藍色),關(guān)于人的描述又進一步可以抽象為://公開的類,允許任何其他類進行訪問publicclassPerson{//以下為私有成員變量,僅允許在該類內(nèi)部訪問privatestringname;//數(shù)據(jù):姓名privateintage;//數(shù)據(jù):年齡privateboolsex;//數(shù)據(jù):性別//公有方法,允許任何類訪問publicvoidDo(){}//方法:做事

3、//受保護的方法,僅允許派生類訪問protectedvoidWalk(){}//方法:走路//內(nèi)部方法,僅允許在同一個程序集(項目)內(nèi)訪問internalvoidSay(){}//方法:說話}采用UML圖形描述為:通過該圖形可以看出我們將一個自然界中真實的事物:人進行了封裝,將人(包括特征和行為)抽象成了開發(fā)語言當中的類。因此,類的產(chǎn)生本身就是封裝的體現(xiàn)。于是,封裝構(gòu)成了面向?qū)ο蟮牡谝淮筇卣鳌?繼承面向?qū)ο缶幊?OOP)語言的一個主要功能就是“繼承”。繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能,并在無需重新編寫原來的類的情況下對這些功能進行擴展。?通過繼承創(chuàng)建的新類稱為

4、“子類”或“派生類”。?被繼承的類稱為“基類”、“父類”或“超類”。?繼承的過程,就是從一般到特殊(具體)的過程。關(guān)于繼承的關(guān)系,可以這樣描述:子類isa父類或者嚴格來說子類isakindof父類(子類是父類的一種)。如:狗是動物的一種(狗是動物),學生是人的一種(學生是人)。具備繼承關(guān)系的多個類構(gòu)成了一種繼承體系或者稱為繼承層次。采用UML圖形建模方式來展示這種層次關(guān)系,會更加直觀。(這里的父類為人(Person),共派生了兩個子類:學生(Student)和教師(Teacher)。并且學生類額外增加了一個學習(Learn)方法,教師類額外增加了一個教學(Teach)方法。)

5、借此圖,我們再進一步闡述繼承關(guān)系。上圖說明,Person是基類,而Student和Teacher都派生自Person。于是我們說Student是Person的一種,Teacher是Person的一種,并且Student和Teacher將繼承Person的所有的功能和屬性(這里指訪問級別為公開的和受保護的或者內(nèi)部的)。關(guān)于對象和對象的關(guān)系中,還有一種包含關(guān)系,如下面圖示:(注:上面的圖示不屬于UML建模圖形)通過上圖可以看出Head這個類是由下面的Eye、Nose、Mouth、Ear組合而成的。這時候我們可以說,EyeisapartofHead或者NoseisapartofHe

6、ad等等。也就是說,眼、鼻、嘴、耳都是頭的一部分。在UML中,又把包含關(guān)系細分為兩種,分別稱為組合和聚合。組合:上面的UML圖形采用的是實心菱形加實線箭頭表示,意思是:Car(汽車)是由Wheel(輪胎)組成,WheelisapartofCar。除了具備包含關(guān)系,組合的特點還有:Wheel(輪胎)是不能離開Car(汽車)而單獨存在的。當然這也需要視問題領(lǐng)域,如果是汽車制造廠,我們說,輪胎是一定要組合到汽車里面去的,因為它離開汽車就沒有意義了。但是,如果是在賣輪胎的店鋪里,就算輪胎離開了汽車,它也是有意義的,這里就可以采用聚合了。聚合:上面的UML圖形采用的是空心菱形加實線箭頭

7、表示,意思是Car聚合Wheel,同樣Wheel(輪胎)是Car(汽車)的一部分,但是這里的Wheel可以脫離Car而獨立存在。因此,關(guān)于類的包含關(guān)系,到底是使用聚合還是組合,需要看具體的問題領(lǐng)域,從而設(shè)計最合適的關(guān)系模型。思考下面的問題,看是采用聚合還是組合:1、眼睛和頭的關(guān)系2、鼻子和頭的關(guān)系3、學生和老師的關(guān)系4、電腦和硬盤的關(guān)系5、電器和電池的關(guān)系關(guān)于類之間的關(guān)系,我們知道有三種:繼承、包含和關(guān)聯(lián)。前面我們借著講繼承的概念,順便用UML圖形建模描述了繼承關(guān)系和包含關(guān)系,為了概念的完整性,我們再進

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。