第5章-繼承與多態(tài)-Java面向?qū)ο蟪绦蛟O(shè)計教程-微課視頻版-程杰-清華大學(xué)出版社_第1頁
第5章-繼承與多態(tài)-Java面向?qū)ο蟪绦蛟O(shè)計教程-微課視頻版-程杰-清華大學(xué)出版社_第2頁
第5章-繼承與多態(tài)-Java面向?qū)ο蟪绦蛟O(shè)計教程-微課視頻版-程杰-清華大學(xué)出版社_第3頁
第5章-繼承與多態(tài)-Java面向?qū)ο蟪绦蛟O(shè)計教程-微課視頻版-程杰-清華大學(xué)出版社_第4頁
第5章-繼承與多態(tài)-Java面向?qū)ο蟪绦蛟O(shè)計教程-微課視頻版-程杰-清華大學(xué)出版社_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

JAVA面向?qū)ο蟪绦蛟O(shè)計教程第5章繼承與多態(tài)第5章繼承與多態(tài)5.1繼承5.2抽象類5.3接口5.4應(yīng)用實例:POS刷卡機(jī)第5章繼承與多態(tài)繼承性是面向?qū)ο蟮闹匾匦?。繼承允許一個類成為另一個類的子類,子類繼承了父類的所有特性,并且可以擴(kuò)展出自己特征。類的繼承性提供了一種明確描述共性的方法,減少了類似的重復(fù)說明。繼承機(jī)制提高了軟件的可用性、代碼的復(fù)用性以及界面的一致性。通過使用子類,可以實現(xiàn)繼承。從最一般的類開始,逐步特殊化,可派生出一系列的子類。父類和子類之間的關(guān)系呈現(xiàn)出層次化。同時,繼承實現(xiàn)的代碼復(fù)用,使程序復(fù)雜度線性地增長,而不是呈幾何級數(shù)增長。在Java中任何一個類都有父類(除了object類以外)。Java只支持單重繼承,大大降低了繼承的復(fù)雜度。5.1繼承由繼承而得到的類稱為子類,被繼承的類稱為父類(超類)。Java不支持多重繼承(子類只能有一個父類)。在類的聲明中,通過使用關(guān)鍵字extends來聲明一個類的子類,格式如下:class子類名extends父類名{

…}5.1.1子類與父類類可以有兩種重要的成員:成員變量和方法。子類的成員中有一部分是子類自己聲明定義的,另一部分是從它的父類繼承的。那么,什么叫繼承呢?所謂子類繼承父類的成員變量作為自己的一個成員變量,就好像它們是在子類中直接聲明一樣,可以被子類中自己聲明的任何實例方法操作,也就是說,一個子類繼承的成員應(yīng)當(dāng)是這個類的完全意義的成員,如果子類中聲明的實例方法不能操作父類的某個成員變量,該成員變量就沒有被子類繼承;同樣子類繼承父類的方法作為子類中的一個方法,就像它們是在子類中直接聲明一樣,可以被子類中自己聲明的任何實例方法調(diào)用。5.1.2類的繼承性當(dāng)用子類的構(gòu)造方法創(chuàng)建一個子類的對象時,子類的構(gòu)造方法總是先調(diào)用父類的某個構(gòu)造方法,也就是說,如果子類的構(gòu)造方法沒有明顯地指明使用父類的哪個構(gòu)造方法,子類就調(diào)用父類不帶參數(shù)的構(gòu)造方法。因此,當(dāng)用子類創(chuàng)建對象時,不僅子類中聲明的成員變量被分配了內(nèi)存,而且父類的成員變量也都分配了內(nèi)存空間,但只將其中一部分(子類繼承的那部分)作為分配給子類對象的變量。5.1.3子類對象的構(gòu)造過程子類也可以隱藏繼承的成員變量,對于子類可以從父類繼承成員變量,只要子類中定義的成員變量和父類中的成員變量同名時,子類就隱藏了繼承的成員變量,即子類對象以及子類自己聲明定義的方法操作與父類同名的成員變量是指子類重新聲明定義的這個成員變量。5.1.4成員變量的隱藏和方法重寫子類可以隱藏從父類繼承的成員變量和方法,如果在子類中想使用被子類隱藏的成員變量或方法,就可以使用關(guān)鍵字super。1.使用super調(diào)用父類的構(gòu)造方法2.使用super操作被隱藏的成員變量和方法5.1.5super關(guān)鍵字對象的上轉(zhuǎn)型對象的實體是子類負(fù)責(zé)創(chuàng)建的,但上轉(zhuǎn)型對象會失去原對象的一些屬性和功能(上轉(zhuǎn)型對象相當(dāng)于子類對象的一個“簡化”對象)。上轉(zhuǎn)型對象具有如下特點:(1)上轉(zhuǎn)型對象不能操作子類新增的成員變量(失掉了這部分屬性);不能調(diào)用子類新增的方法(失掉了一些功能)。(2)上轉(zhuǎn)型對象可以訪問子類繼承或隱藏的成員變量,也可以調(diào)用子類繼承的方法或子類的重寫方法。上轉(zhuǎn)型對象操作子類繼承的方法或子類重寫的方法,其作用等價于子類對象去調(diào)用這些方法。因此,如果子類重寫了父類的某個方法后,當(dāng)對象的上轉(zhuǎn)型對象調(diào)用這個方法時一定是調(diào)用了子類重寫的方法。5.1.6對象的上轉(zhuǎn)型對象abstract類中可以有abstract方法。和普通的類相比,abstract類可以有abstract方法(抽象方法),也可以有非abstract方法。5.2抽象類1.接口的聲明前面曾使用class關(guān)鍵字來聲明類,接口通過使用關(guān)鍵字interface來聲明。格式為:interface接口的名字2.接口體接口體中包含常量定義和方法定義兩部分。接口體中只進(jìn)行方法的聲明,不許提供方法的實現(xiàn),所以,方法的定義沒有方法體,且用分號“;”結(jié)尾。5.3接口接口和抽象類的比較如下:(1) 抽象類和接口都可以有abstract方法(2) 接口中只可以有常量,不能有變量;而抽象類中即可以有常量也可以有變量。(3) 抽象類中也可以有非abstract方法,接口不可以。抽象類與接口的比較在日常生活中商家為了促銷往往會為消費者辦理各種充值卡,不同的充值卡其打折的力度也不盡相同。模擬充值卡消費,POS機(jī)能夠按照相應(yīng)的充值卡進(jìn)行消費扣款,并且商家可以自定義多種不同類型的充值卡。5.4應(yīng)用實例:POS刷卡機(jī)多態(tài)性就是指父類的某個方法被其子類重寫時,可以各自產(chǎn)生自己的功能行為?!厩榫耙搿吭谌粘I钪猩碳覟榱舜黉N往往會為消費者辦理各種充值卡,不同的充值卡其打折的力度也不盡相同。各個景點的景區(qū)門票往往也會針對不同的群體進(jìn)行不同的定價。1.多態(tài)性(Polymorphism)的概念當(dāng)我們把子類創(chuàng)建的對象的引用放到一個父類的對象中時,就得到了該對象的一個上轉(zhuǎn)型對象,那

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論