版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章繼承性和多態(tài)性1繼承性和多態(tài)性主要內(nèi)容4.1繼承性派生類的定義super關(guān)鍵字protected和final關(guān)鍵字4.2多態(tài)性4.3抽象類和接口抽象類接口4.4初始化塊2繼承性和多態(tài)性4.1繼承性類具有繼承性,子類對(duì)父類的繼承關(guān)系體現(xiàn)了現(xiàn)實(shí)世界中特殊和一般的關(guān)系。通過繼承可以更有效地組織程序結(jié)構(gòu),明確類間關(guān)系,并充分利用已有的類來完成更復(fù)雜、深入的開發(fā)。4.1.1派生類的定義Java中的所有類都是java.lang.Object類的子類。Java語(yǔ)言中派生類的定義格式如下:示例:參看例4.1class<子類>extends<唯一的父類名>{<類定義體>}3繼承性和多態(tài)性關(guān)于方法覆蓋只有當(dāng)實(shí)例方法能被訪問時(shí),才能進(jìn)行方法覆蓋。私有方法不能被覆蓋.靜態(tài)方法(類方法)能被繼承,但不能被覆蓋。子類在重新定義父類已有的方法時(shí),應(yīng)保持與父類完全相同的方法名、返回值類型和參數(shù)列表,否則就不是方法的覆蓋,而是子類定義自己特有的方法,與父類的方法無(wú)關(guān)。5繼承性和多態(tài)性3.super關(guān)鍵字super表示的是當(dāng)前對(duì)象的直接父類對(duì)象,是當(dāng)前對(duì)象的直接父類對(duì)象的引用。super的使用方法有三種:(1)訪問直接父類隱藏的數(shù)據(jù)成員,其使用形式如下:super.數(shù)據(jù)成員(2)調(diào)用直接父類中被覆蓋的成員方法,其使用形式如下:super.成員方法(參數(shù))(3)調(diào)用直接父類的構(gòu)造方法,其使用形式如下:super(參數(shù))示例:參看例4.26繼承性和多態(tài)性4.1.3protected和final關(guān)鍵字1.protected關(guān)鍵字用protected修飾的成員變量可以被三種類所引:該類自身、與它在同一個(gè)包中的其它類及在其它包中的該類的子類。2.final關(guān)鍵字使用final關(guān)鍵字可以定義常量。定義類時(shí),在class關(guān)鍵字前加關(guān)鍵字final,表示此類是最終類,不能被其它類繼承,不能做父類。用final修飾成員方法,表示此方法不能被它的子類覆蓋。7繼承性和多態(tài)性3.native關(guān)鍵字native修飾的方法稱為本地方法,此方法使用的目的是為了將其它語(yǔ)言(例如,C、C++、FORTRAN、匯編等)嵌入到Java語(yǔ)言中。這樣可以充分利用已經(jīng)存在的其它語(yǔ)言的程序功能模塊,避免重復(fù)編程。8繼承性和多態(tài)性運(yùn)行時(shí)的多態(tài)性是Java多態(tài)性的最重要的體現(xiàn),在Java語(yǔ)言的繼承關(guān)系中,子類對(duì)象與父類對(duì)象之間有一個(gè)重要特性:在任何需要父類對(duì)象的地方,都可以使用子類對(duì)象來代替,即子類對(duì)象可以作為父類對(duì)象來使用。一個(gè)對(duì)象可以通過引用子類的實(shí)例來調(diào)用子類的方法,通常,方法在父類中定義,在子類中覆蓋,子類中調(diào)用哪個(gè)方法是在運(yùn)行時(shí)決定的,取決于對(duì)象的類型,稱為運(yùn)行時(shí)的多態(tài)性。示例:參看例4.310繼承性和多態(tài)性4.3抽象類和接口抽象類體現(xiàn)數(shù)據(jù)抽象的思想,是實(shí)現(xiàn)程序多態(tài)性的一種手段。接口則是Java中實(shí)現(xiàn)多重繼承的唯一途徑。4.3.1抽象類抽象類的作用在于將許多有關(guān)的類組織在一起,提供一個(gè)公共的類,即抽象類,而那些被它組織在一起的具體的類做為它的子類由它派生出來。定義一個(gè)抽象類的格式如下:abstractclassabstractClass{/*類定義體*/}抽象方法是指在返回值類型前加上abstract關(guān)鍵字,且沒有方法體。格式如下:abstract<返回值類型><抽象方法名>([<形式參數(shù)列表>]);示例:參看例4.411繼承性和多態(tài)性(6)抽象類不能使用new運(yùn)算符創(chuàng)建對(duì)象,但仍可在抽象類中定義構(gòu)造方法,可由派生類的構(gòu)造方法調(diào)用;(7)abstract和final不能同時(shí)修飾一個(gè)類;(8)abstract不能與private、static、final或native同時(shí)修飾一個(gè)方法;(9)abstract類中不能有private的數(shù)據(jù)成員或成員方法;(10)父類是非抽象類(即具體類),則其子類仍可是抽象類;(11)雖然不能創(chuàng)建抽象類的對(duì)象,但抽象類可以當(dāng)作數(shù)據(jù)類型使用,如作為方法形參類型、返回值類型、數(shù)組元素類型等等。
13繼承性和多態(tài)性4.3.2
接口與C++不同,Java不支持多重繼承,而是用接口實(shí)現(xiàn)比多重繼承更強(qiáng)的功能。接口則把方法的定義和類的層次區(qū)分開來,通過它可以在運(yùn)行時(shí)動(dòng)態(tài)地定位所調(diào)用的方法。同時(shí),接口可以實(shí)現(xiàn)“多重繼承”,且一個(gè)類可實(shí)現(xiàn)多個(gè)接口,正是這些機(jī)制使得接口提供了比多重繼承更簡(jiǎn)單,更靈活,而且更強(qiáng)健的功能。接口就是方法定義和常量值的集合。從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有方法的實(shí)現(xiàn)。14繼承性和多態(tài)性1.聲明接口聲明接口的格式如下:[修飾符]interface接口名[extends父接口名列表]{常量數(shù)據(jù)成員聲明抽象方法聲明}其中:(1)interface是聲明接口的關(guān)鍵字,可以把它看成一個(gè)特殊類;(2)接口名要求符合Java標(biāo)識(shí)符命名規(guī)則;(3)修飾符有兩種:public和默認(rèn)。public修飾的接口是公共接口,可以被所有的類和接口使用;默認(rèn)修飾符的接口只能被同一個(gè)包中的其它類和接口使用;15繼承性和多態(tài)性(6)接口中沒有自身的構(gòu)造方法,所有成員方法都是抽象方法;在接口中只能給出這些抽象方法的方法名、返回值和參數(shù)列表,而不能定義方法體,即僅僅規(guī)定了一組信息交換、傳輸和處理的“接口”。格式如下:返回值類型方法名(參數(shù)列表);17繼承性和多態(tài)性2.接口的實(shí)現(xiàn)接口定義僅僅是實(shí)現(xiàn)某一特定功能的一組功能的對(duì)外接口和規(guī)范,而不能真正地實(shí)現(xiàn)這個(gè)功能,這個(gè)功能的真正實(shí)現(xiàn)是在“繼承”這個(gè)接口的各個(gè)類中完成的,要由這些類來具體定義接口中各抽象方法的方法體。一個(gè)類只能繼承一個(gè)父類,但是可實(shí)現(xiàn)多個(gè)接口。類定義的完整格式如下:[<修飾符>]class<類名>[extends<父類名>][implements<接口名1>,<接口名2>,……]{//類定義體}示例:參看例4.518繼承性和多態(tài)性關(guān)于接口的實(shí)現(xiàn)(1)在類中,用implements關(guān)鍵字就可以調(diào)用接口。一個(gè)類可以調(diào)用多個(gè)接口,這時(shí),在implements后用逗號(hào)隔開多個(gè)接口的名字;(2)如果實(shí)現(xiàn)某接口的類不是抽象類,則在類的定義體部分必須實(shí)現(xiàn)指定接口的所有抽象方法,即為所有抽象方法定義方法體,而且方法頭部分應(yīng)該與接口中的定義完全一致,即有完全相同的返回值和參數(shù)列表;(3)如果實(shí)現(xiàn)某接口的類是抽象類,則它可以不實(shí)現(xiàn)該接口所有的方法。(4)接口的抽象方法的訪問限制符都己指定為public,所以類在實(shí)現(xiàn)方法時(shí),必須顯式地使用public修飾符,否則編譯系統(tǒng)警告為縮小了接口中定義的方法的訪問控制范圍。19繼承性和多態(tài)性4.類型轉(zhuǎn)換和instanceof運(yùn)算符基本數(shù)據(jù)類型可以進(jìn)行強(qiáng)制或自動(dòng)類型轉(zhuǎn)換,也可以把一個(gè)類的對(duì)象轉(zhuǎn)換為繼承鏈中的另一個(gè)對(duì)象。將子類的實(shí)例轉(zhuǎn)換為父類的實(shí)例總是可行的,因?yàn)樽宇惖膶?shí)例也是父類的實(shí)例。例如例4.5中的語(yǔ)句Shapes[0]=point;//等價(jià)于Shapes[0]=(Shape)point;把父類對(duì)象轉(zhuǎn)換為子類對(duì)象時(shí),必須使用強(qiáng)制類型轉(zhuǎn)換,為使轉(zhuǎn)換成功,必須確保轉(zhuǎn)換的對(duì)象是子類的一個(gè)實(shí)例。21繼承性和多態(tài)性進(jìn)行轉(zhuǎn)換時(shí)確保該對(duì)象是另一個(gè)類的實(shí)例,可以利用instanceof運(yùn)算符來完成。如:Pointpoint1=newPoint();//Point是Circle的父類if(point1instanceofCircle){ Circlecircle1=(Circle)point1;}22繼承性和多態(tài)性父類對(duì)象與和子類對(duì)象的轉(zhuǎn)化需要注意如下的原則:(1)子類對(duì)象可以被視為是其父類的一個(gè)對(duì)象;(2)父類對(duì)象不能當(dāng)成是其某一個(gè)子類的對(duì)象;(3)如果一個(gè)方法的形式參數(shù)定義的是父類對(duì)象,那么調(diào)用這個(gè)方法時(shí),可以使用子類對(duì)象作為形式參數(shù);(4)如果父類對(duì)象引用指向的實(shí)際是一個(gè)子類對(duì)象,那么這個(gè)父類對(duì)象的引用可以用強(qiáng)制類型轉(zhuǎn)換轉(zhuǎn)化成子類對(duì)象的引用。在轉(zhuǎn)換之前要使用instanceof運(yùn)算符進(jìn)行判斷。23繼承性和多態(tài)性4.4初始化塊初始化塊用來和構(gòu)造方法一起初始化對(duì)象。初始化塊是封裝在一對(duì)大括號(hào)內(nèi)的語(yǔ)句塊,初始化塊在類的定義體內(nèi),但不能包含在方法體內(nèi)或構(gòu)造方法體內(nèi)。初始化塊分為對(duì)象(實(shí)例)初始化塊和靜態(tài)(類)初始
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年12月江蘇南京市溧水區(qū)教育局所屬高中招聘教師55人備考題庫(kù)及答案詳解一套
- 2025山東省地質(zhì)礦產(chǎn)勘查開發(fā)局所屬事業(yè)單位招聘21人備考題庫(kù)及完整答案詳解1套
- 2025年系統(tǒng)與設(shè)計(jì)試題及答案
- 2025河北秦皇島市外事旅游職業(yè)學(xué)校教師招聘?jìng)淇碱}庫(kù)及答案詳解(新)
- 2025年溫州消防考試試題庫(kù)及答案
- 2025年沙洋縣事業(yè)單位真題附答案
- 2025年麻醉藥品考試題庫(kù)及答案
- 2026年福建省福州市閩侯縣教育局關(guān)于研究生44人招聘?jìng)淇碱}庫(kù)附答案詳解
- (2025年)盲板抽堵作業(yè)監(jiān)護(hù)人試題附答案
- 2026浙江嘉興南洋職業(yè)技術(shù)學(xué)院教職人員招聘12人備考題庫(kù)附答案詳解
- 呼吸機(jī)相關(guān)肺炎預(yù)防策略指南2026
- 2026年內(nèi)蒙古白音華鋁電有限公司招聘?jìng)淇碱}庫(kù)帶答案詳解
- 2025年玉溪市市直事業(yè)單位選調(diào)工作人員考試筆試試題(含答案)
- 2026年游戲AB測(cè)試實(shí)施方法含答案
- 2025湖南湘西鶴盛原煙發(fā)展有限責(zé)任公司招聘擬錄用人員筆試歷年備考題庫(kù)附帶答案詳解
- 江蘇省2025年普通高中學(xué)業(yè)水平合格性考試英語(yǔ)試卷(含答案)
- 枕骨骨折的護(hù)理課件
- TCEC電力行業(yè)數(shù)據(jù)分類分級(jí)規(guī)范-2024
- GB/T 26951-2025焊縫無(wú)損檢測(cè)磁粉檢測(cè)
- 2025及未來5-10年高壓管匯項(xiàng)目投資價(jià)值市場(chǎng)數(shù)據(jù)分析報(bào)告
- 腹部手術(shù)圍手術(shù)期疼痛管理指南(2025版)課件
評(píng)論
0/150
提交評(píng)論