繼承、多態(tài)、接口、異常_第1頁(yè)
繼承、多態(tài)、接口、異常_第2頁(yè)
繼承、多態(tài)、接口、異常_第3頁(yè)
繼承、多態(tài)、接口、異常_第4頁(yè)
繼承、多態(tài)、接口、異常_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、一、繼承面向?qū)ο蟮娜筇卣鳎悍庋b、繼承、多態(tài)1、定義: 繼承是軟件可重用性的一種表現(xiàn),新類(lèi)可以在不增加自身代碼的情況下,通過(guò)從現(xiàn)有的類(lèi)中繼承其屬性和方法。繼承最基本的作用就是使得代碼課重用,增加軟件的可擴(kuò)充性。2、語(yǔ)法:訪(fǎng)問(wèn)修飾符 class 子類(lèi)名 extends 父類(lèi)名3、注意:l 子類(lèi)不能繼承父類(lèi)的構(gòu)造方法、private成員和子類(lèi)與父類(lèi)不同包且使用默認(rèn)訪(fǎng)問(wèn)權(quán)限的成員。l 每個(gè)類(lèi)只能有一個(gè)直接父類(lèi)。4、特點(diǎn):l 可以繼承public和protected修飾的屬性和方法,不論子類(lèi)和父類(lèi)是否在同一個(gè)包里。l 可以繼承默認(rèn)訪(fǎng)問(wèn)修飾符修飾的屬性和方法,但是子類(lèi)和父類(lèi)必須在同一個(gè)包里l 無(wú)法繼承父

2、類(lèi)的構(gòu)造方法(可以通過(guò)super關(guān)鍵字調(diào)用,且調(diào)用時(shí)必須是子類(lèi)構(gòu)造方法的第一句)。l 繼承表達(dá)的是“*is a*”的關(guān)系。l 可以使用super關(guān)鍵字調(diào)用父類(lèi)成員:super只能出現(xiàn)在子類(lèi)的方法和構(gòu)造方法中,可以訪(fǎng)問(wèn)父類(lèi)的屬性、方法、構(gòu)造方法;l 繼承是多態(tài)的基礎(chǔ),沒(méi)有繼承就沒(méi)有多態(tài)。5、補(bǔ)充:訪(fǎng)問(wèn)修飾符本類(lèi)同包子類(lèi)其他private默認(rèn)的(Friendly)protectedpublic注:protected:不同包中只有實(shí)例化子類(lèi)的對(duì)象可以調(diào)用protected成員。6、實(shí)例化子類(lèi)對(duì)象l 子類(lèi)在實(shí)例化時(shí),會(huì)首先執(zhí)行其父類(lèi)的構(gòu)造方法,然后才執(zhí)行子類(lèi)的構(gòu)造方法。l 一個(gè)類(lèi)的構(gòu)造方法在兩種情況中

3、總是會(huì)執(zhí)行:創(chuàng)建該類(lèi)的對(duì)象和創(chuàng)建該類(lèi)的子類(lèi)的對(duì)象。l 子類(lèi)繼承父類(lèi)時(shí)構(gòu)造方法的調(diào)用規(guī)則:如果子類(lèi)的構(gòu)造方法中沒(méi)有通過(guò)super調(diào)用父類(lèi)的有參構(gòu)造方法,也沒(méi)有通過(guò)this調(diào)用自身的其他構(gòu)造方法,則系統(tǒng)會(huì)默認(rèn)先調(diào)用父類(lèi)的無(wú)參構(gòu)造方法。如果子類(lèi)的構(gòu)造方法中通過(guò)super調(diào)用父類(lèi)的構(gòu)造方法,那么將執(zhí)行父類(lèi)相應(yīng)的構(gòu)造方法。如果子類(lèi)的構(gòu)造方法中通過(guò)this調(diào)用自身的其他構(gòu)造方法,在相應(yīng)構(gòu)造方法中應(yīng)用以上兩條規(guī)則。7、方法的重寫(xiě) 如果從父類(lèi)繼承的方法不能滿(mǎn)足子類(lèi)的需求,可以在子類(lèi)中對(duì)父類(lèi)的同名方法進(jìn)行重寫(xiě)即覆蓋。要求:Ø 發(fā)生的兩個(gè)類(lèi)中(子類(lèi)重寫(xiě)父類(lèi)的方法);Ø 方法名必須相同;

4、6; 必須具有相同的參數(shù)列表(類(lèi)型和個(gè)數(shù));Ø 返回值類(lèi)型必須相同或者是其子類(lèi);Ø 重寫(xiě)的方法的訪(fǎng)問(wèn)權(quán)限不能小于原方法的訪(fǎng)問(wèn)權(quán)限。注:構(gòu)造方法不能重寫(xiě)8、方法重寫(xiě)和方法重載的區(qū)別與聯(lián)系位置方法名參數(shù)表返回值訪(fǎng)問(wèn)修飾符方法重寫(xiě)子類(lèi)相同相同相同或是其子類(lèi)不能?chē)?yán)于父類(lèi)方法重載同類(lèi)相同不同無(wú)關(guān)無(wú)關(guān)9、final關(guān)鍵字l Final類(lèi)不能被繼承l(wèi) Final方法不能被重寫(xiě)l Final屬性不能被修改,且必須有初始值二、抽象方法和抽象類(lèi)1、定義:當(dāng)一個(gè)類(lèi)的方法被abstract關(guān)鍵字修飾時(shí),該方法稱(chēng)為抽象方法,抽象方法所在的類(lèi)必須定義為抽象類(lèi)。2、語(yǔ)法:抽象方法:訪(fǎng)問(wèn)修飾符 abstr

5、act 返回類(lèi)型 方法名(參數(shù)列表);抽象類(lèi):abstract class 類(lèi)名3、特點(diǎn)l 抽象方法和抽象類(lèi)需要用abstract修飾;l 抽象方法沒(méi)有方法體,抽象類(lèi)不能實(shí)例化;l 抽象方法必須在抽象類(lèi)里面,而抽象類(lèi)中可以包含抽象方法,也可以包含普通類(lèi)的一切成員;l 如果父類(lèi)是抽象類(lèi),那么其所有的抽象方法必須在子類(lèi)中實(shí)現(xiàn)(通過(guò)重寫(xiě)),除非子類(lèi)也是抽象類(lèi);l Abstract修飾符不能喝f(wàn)inal修飾符一起用;l Private關(guān)鍵字不能修飾抽象方法。三、多態(tài)1、定義: 在程序設(shè)計(jì)的術(shù)語(yǔ)中,它意味著一個(gè)特定類(lèi)型的變量可以引用不同類(lèi)型的對(duì)象,并且能自動(dòng)地調(diào)用引用的對(duì)象的方法。方法重寫(xiě)是實(shí)現(xiàn)多態(tài)的基

6、礎(chǔ)。2、2個(gè)要素:子類(lèi)重寫(xiě)父類(lèi)方法、使用父類(lèi)類(lèi)型3、向上轉(zhuǎn)型(自動(dòng)類(lèi)型轉(zhuǎn)換):l 子類(lèi)到父類(lèi)的轉(zhuǎn)換l 語(yǔ)法:父類(lèi)型 引用變量名 = new 子類(lèi)型();l 此時(shí)通過(guò)父類(lèi)引用變量調(diào)用的方法時(shí)子類(lèi)覆蓋或繼承父類(lèi)的方法,不是父類(lèi)的方法;l 此時(shí)通過(guò)父類(lèi)引用變量無(wú)法調(diào)用子類(lèi)特有的方法。4、向下轉(zhuǎn)型(強(qiáng)制類(lèi)型轉(zhuǎn)換):l 父類(lèi)類(lèi)型轉(zhuǎn)換為子類(lèi)類(lèi)型l 語(yǔ)法:子類(lèi)型 引用變量名 = (子類(lèi)型)父類(lèi)型的引用變量l Instanceof運(yùn)算符:對(duì)象類(lèi)型必須和其后面的參數(shù)所指的的類(lèi)在繼承上有上下級(jí)關(guān)系。通常和強(qiáng)制類(lèi)型轉(zhuǎn)換結(jié)合使用,判斷其真實(shí)子類(lèi)類(lèi)型。5、優(yōu)點(diǎn)² 可替換性² 可擴(kuò)充性² 接

7、口性² 靈活性² 簡(jiǎn)化性6、應(yīng)用形式:使用父類(lèi)作為方法的形參使用父類(lèi)作為方法的返回值四、接口1、初識(shí)接口 接口可以看做一種特殊的抽象類(lèi),接口是一個(gè)不能實(shí)例化的類(lèi)型,它里面的所有方法都是抽象方法。2、語(yǔ)法接口定義語(yǔ)法:Public interface 接口名/接口成員實(shí)現(xiàn)接口語(yǔ)法:Public 類(lèi)名 implements 接口名實(shí)現(xiàn)方法普通方法接口繼承接口:修飾符 interface 接口名 extends 父接口1,父接口2,.常量定義方法定義同時(shí)繼承抽象類(lèi)和實(shí)現(xiàn)多個(gè)接口語(yǔ)法:Class 類(lèi)名 extends 父類(lèi)名 implements 接口1,接口2,.類(lèi)的成員3、特點(diǎn)

8、l 定義接口用interface修飾符,訪(fǎng)問(wèn)修飾符只能是public;l 接口要使用必須通過(guò)子類(lèi),子類(lèi)通過(guò)implements關(guān)鍵字實(shí)現(xiàn)接口;l 實(shí)現(xiàn)接口的類(lèi)必須實(shí)現(xiàn)接口中定義的所有抽象方法,接口的實(shí)現(xiàn)類(lèi)可以包含普通方法;l 接口和抽象類(lèi)一樣不可以被實(shí)例化;l 實(shí)現(xiàn)類(lèi)可以實(shí)現(xiàn)多個(gè)接口;l 接口中的成員只能是全局常量和公共的抽象方法;l 接口是一種能力,體現(xiàn)在接口的方法上(as . a);l 一個(gè)類(lèi)只能繼承一個(gè)父類(lèi),但恩給你同時(shí)實(shí)現(xiàn)多個(gè)接口,也可以同時(shí)繼承抽象類(lèi)和實(shí)現(xiàn)接口;l 可以切換實(shí)現(xiàn)類(lèi)。4、注意l 接口和類(lèi)、抽象類(lèi)是一個(gè)層次的概念,命名規(guī)則相同;l 修飾符只能是public,該接口在整個(gè)項(xiàng)

9、目可見(jiàn),如果省略修飾符,則只在當(dāng)前包可見(jiàn);l 接口中不能定義變量,所有的屬性都默認(rèn)用“public static final”修飾且必須在定義時(shí)賦初始值不能更改;l 接口中的所有方法都是抽象方法,都默認(rèn)為public;l 接口不能被實(shí)例化,不能有構(gòu)造方法;l 接口之間通過(guò)extends實(shí)現(xiàn)繼承關(guān)系,一個(gè)接口可以繼承多個(gè)接口,但接口不能繼承類(lèi),類(lèi)可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)類(lèi);l 一個(gè)類(lèi)必須實(shí)現(xiàn)其接口的全部方法,除非為抽象類(lèi);l 一個(gè)類(lèi)在繼承父類(lèi)的同時(shí)又實(shí)現(xiàn)了多個(gè)接口時(shí),extends必須位于implements之前。五異常try catch finally throw throws每個(gè)變量

10、在使用前要判斷其有效性1、定義 異常就是在程序的運(yùn)行過(guò)程中所發(fā)生的不正常事件,如所需文件找不到、網(wǎng)絡(luò)連接不通或中斷、算術(shù)運(yùn)算出錯(cuò)、數(shù)組下標(biāo)越界、裝載一個(gè)不存在的類(lèi)、對(duì)null對(duì)象操作、類(lèi)型轉(zhuǎn)換異常等。異常會(huì)中斷正在運(yùn)行的程序。2、try-catchpublic void method()try / 代碼段 1 / 產(chǎn)生異常的代碼段 2 / 代碼段 3 catch (異常類(lèi)型 ex) / 對(duì)異常進(jìn)行處理的代碼段4/ 代碼段5使用try-catch處理異常:可能出現(xiàn)的三種情況1) 如果try語(yǔ)句塊中的所有語(yǔ)句正常執(zhí)行完畢,不會(huì)發(fā)生異常,那么catch語(yǔ)句塊總的所有語(yǔ)句都將會(huì)被忽略。2) 如果try

11、語(yǔ)句塊在執(zhí)行過(guò)程中發(fā)生異常,并且與catch語(yǔ)句塊中聲明的異常類(lèi)型想匹配,那么在try語(yǔ)句塊中剩下的代碼被忽略,而相應(yīng)的catch語(yǔ)句塊將會(huì)被執(zhí)行。匹配是值catch所處理的異常類(lèi)型與所生成的異常類(lèi)型一致或是它的父類(lèi)。3) 如果try語(yǔ)句塊在執(zhí)行過(guò)程中碰到異常,而拋出的異常在catch語(yǔ)句塊中沒(méi)有被聲明,那么方法立刻退出。3、try-catch-finallypublic void method()try / 代碼段 1 / 產(chǎn)生異常的代碼段 2 catch (異常類(lèi)型 ex) / 對(duì)異常進(jìn)行處理的代碼段3 return;finally / 代碼段 4使用try-catch-finally處理

12、異常的兩種情況:1) 如果try語(yǔ)句塊中所有語(yǔ)句塊正常執(zhí)行完畢,那么finally語(yǔ)句塊就會(huì)被執(zhí)行。2) 如果try語(yǔ)句塊在執(zhí)行過(guò)程中碰到異常,無(wú)論這種異常能否被catch捕捉到,都將執(zhí)行finally語(yǔ)句塊中的代碼。注意:finally語(yǔ)句塊總的語(yǔ)句就算存在return語(yǔ)句也會(huì)執(zhí)行,執(zhí)行順序是執(zhí)行try語(yǔ)句塊或catch語(yǔ)句塊中return之前的語(yǔ)句,執(zhí)行finally語(yǔ)句,執(zhí)行return退出。Finally語(yǔ)句塊中的語(yǔ)句不執(zhí)行的唯一情況是在異常處理代碼中執(zhí)行System.exit(1)退出Java虛擬機(jī)。4、多重catchpublic void method()try / 代碼段 / 產(chǎn)

13、生異常(異常類(lèi)型2) catch (異常類(lèi)型1 ex) / 對(duì)異常進(jìn)行處理的代碼段 catch (異常類(lèi)型2 ex) / 對(duì)異常進(jìn)行處理的代碼段 catch (異常類(lèi)型3 ex) / 對(duì)異常進(jìn)行處理的代碼段/ 代碼段排列順序?yàn)樽宇?lèi)到父類(lèi),最后一個(gè)一般都是exception類(lèi)。運(yùn)行時(shí),系統(tǒng)從上到下分別對(duì)每個(gè)catch語(yǔ)句塊處理的異常類(lèi)型進(jìn)行檢測(cè),并執(zhí)行第一個(gè)與異常類(lèi)型匹配的catch語(yǔ)句。執(zhí)行其中的一條catch語(yǔ)句后,其后的catch語(yǔ)句將被忽略。5、使用throws聲明拋出異常Throws可以同時(shí)聲明多個(gè)異常,之間由逗號(hào)隔開(kāi)。6、使用throw拋出異常l Throw用于程序員自行產(chǎn)生并拋出異

14、常,throws用于聲明該方法內(nèi)拋出了異常;l Throw位于方法體內(nèi)部,可以作為單獨(dú)的語(yǔ)句使用,throws必須跟在方法參數(shù)列表的后面,不能單獨(dú)使用;l Throw拋出一個(gè)異常對(duì)象,且只能一個(gè),throws后面跟異常類(lèi),且可以跟多個(gè)異常類(lèi)。7、 異常對(duì)象常用的方法在catch語(yǔ)句中可以加入用戶(hù)自定義處理信息,也可以調(diào)用異常對(duì)象的方法輸出異常信息,常用方法如下:Ø Void printStackTrace():輸出異常的堆棧信息包括程序運(yùn)行到當(dāng)前類(lèi)的執(zhí)行流程,它將輸出熊方法調(diào)用處到異常拋出處的方法調(diào)用序列。Ø String getMessage():返回異常信息描述字符串,該字符串描述異常產(chǎn)生的原因,是printStackTrace()輸出信息的一部分。8、常見(jiàn)的異常類(lèi)型異 常 類(lèi) 型說(shuō)    明Exception異常層次結(jié)構(gòu)的父類(lèi)ArithmeticException算術(shù)錯(cuò)誤情形,如以零作除數(shù)ArrayIndexOutOfBoundsException數(shù)組下標(biāo)越界NullPointerException嘗試訪(fǎng)問(wèn) null 對(duì)象成員C

溫馨提示

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

評(píng)論

0/150

提交評(píng)論