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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、一、繼承面向對象的三大特征:封裝、繼承、多態(tài)1、定義: 繼承是軟件可重用性的一種表現,新類可以在不增加自身代碼的情況下,通過從現有的類中繼承其屬性和方法。繼承最基本的作用就是使得代碼課重用,增加軟件的可擴充性。2、語法:訪問修飾符 class 子類名 extends 父類名3、注意:l 子類不能繼承父類的構造方法、private成員和子類與父類不同包且使用默認訪問權限的成員。l 每個類只能有一個直接父類。4、特點:l 可以繼承public和protected修飾的屬性和方法,不論子類和父類是否在同一個包里。l 可以繼承默認訪問修飾符修飾的屬性和方法,但是子類和父類必須在同一個包里l 無法繼承父

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

3、總是會執(zhí)行:創(chuàng)建該類的對象和創(chuàng)建該類的子類的對象。l 子類繼承父類時構造方法的調用規(guī)則:如果子類的構造方法中沒有通過super調用父類的有參構造方法,也沒有通過this調用自身的其他構造方法,則系統(tǒng)會默認先調用父類的無參構造方法。如果子類的構造方法中通過super調用父類的構造方法,那么將執(zhí)行父類相應的構造方法。如果子類的構造方法中通過this調用自身的其他構造方法,在相應構造方法中應用以上兩條規(guī)則。7、方法的重寫 如果從父類繼承的方法不能滿足子類的需求,可以在子類中對父類的同名方法進行重寫即覆蓋。要求: 發(fā)生的兩個類中(子類重寫父類的方法); 方法名必須相同; 必須具有相同的參數列表(類型和

4、個數); 返回值類型必須相同或者是其子類; 重寫的方法的訪問權限不能小于原方法的訪問權限。注:構造方法不能重寫8、方法重寫和方法重載的區(qū)別與聯(lián)系位置方法名參數表返回值訪問修飾符方法重寫子類相同相同相同或是其子類不能嚴于父類方法重載同類相同不同無關無關9、final關鍵字l Final類不能被繼承l(wèi) Final方法不能被重寫l Final屬性不能被修改,且必須有初始值二、抽象方法和抽象類1、定義:當一個類的方法被abstract關鍵字修飾時,該方法稱為抽象方法,抽象方法所在的類必須定義為抽象類。2、語法:抽象方法:訪問修飾符 abstract 返回類型 方法名(參數列表);抽象類:abstrac

5、t class 類名3、特點l 抽象方法和抽象類需要用abstract修飾;l 抽象方法沒有方法體,抽象類不能實例化;l 抽象方法必須在抽象類里面,而抽象類中可以包含抽象方法,也可以包含普通類的一切成員;l 如果父類是抽象類,那么其所有的抽象方法必須在子類中實現(通過重寫),除非子類也是抽象類;l Abstract修飾符不能喝final修飾符一起用;l Private關鍵字不能修飾抽象方法。三、多態(tài)1、定義: 在程序設計的術語中,它意味著一個特定類型的變量可以引用不同類型的對象,并且能自動地調用引用的對象的方法。方法重寫是實現多態(tài)的基礎。2、2個要素:子類重寫父類方法、使用父類類型3、向上轉型

6、(自動類型轉換):l 子類到父類的轉換l 語法:父類型 引用變量名 = new 子類型();l 此時通過父類引用變量調用的方法時子類覆蓋或繼承父類的方法,不是父類的方法;l 此時通過父類引用變量無法調用子類特有的方法。4、向下轉型(強制類型轉換):l 父類類型轉換為子類類型l 語法:子類型 引用變量名 = (子類型)父類型的引用變量l Instanceof運算符:對象類型必須和其后面的參數所指的的類在繼承上有上下級關系。通常和強制類型轉換結合使用,判斷其真實子類類型。5、優(yōu)點 可替換性 可擴充性 接口性 靈活性 簡化性6、應用形式:使用父類作為方法的形參使用父類作為方法的返回值四、接口1、初識

7、接口 接口可以看做一種特殊的抽象類,接口是一個不能實例化的類型,它里面的所有方法都是抽象方法。2、語法接口定義語法:Public interface 接口名/接口成員實現接口語法:Public 類名 implements 接口名實現方法普通方法接口繼承接口:修飾符 interface 接口名 extends 父接口1,父接口2,.常量定義方法定義同時繼承抽象類和實現多個接口語法:Class 類名 extends 父類名 implements 接口1,接口2,.類的成員3、特點l 定義接口用interface修飾符,訪問修飾符只能是public;l 接口要使用必須通過子類,子類通過impleme

8、nts關鍵字實現接口;l 實現接口的類必須實現接口中定義的所有抽象方法,接口的實現類可以包含普通方法;l 接口和抽象類一樣不可以被實例化;l 實現類可以實現多個接口;l 接口中的成員只能是全局常量和公共的抽象方法;l 接口是一種能力,體現在接口的方法上(as . a);l 一個類只能繼承一個父類,但恩給你同時實現多個接口,也可以同時繼承抽象類和實現接口;l 可以切換實現類。4、注意l 接口和類、抽象類是一個層次的概念,命名規(guī)則相同;l 修飾符只能是public,該接口在整個項目可見,如果省略修飾符,則只在當前包可見;l 接口中不能定義變量,所有的屬性都默認用“public static fin

9、al”修飾且必須在定義時賦初始值不能更改;l 接口中的所有方法都是抽象方法,都默認為public;l 接口不能被實例化,不能有構造方法;l 接口之間通過extends實現繼承關系,一個接口可以繼承多個接口,但接口不能繼承類,類可以實現多個接口,但只能繼承一個類;l 一個類必須實現其接口的全部方法,除非為抽象類;l 一個類在繼承父類的同時又實現了多個接口時,extends必須位于implements之前。五異常try catch finally throw throws每個變量在使用前要判斷其有效性1、定義 異常就是在程序的運行過程中所發(fā)生的不正常事件,如所需文件找不到、網絡連接不通或中斷、算術

10、運算出錯、數組下標越界、裝載一個不存在的類、對null對象操作、類型轉換異常等。異常會中斷正在運行的程序。2、try-catchpublic void method()try / 代碼段 1 / 產生異常的代碼段 2 / 代碼段 3 catch (異常類型 ex) / 對異常進行處理的代碼段4/ 代碼段5使用try-catch處理異常:可能出現的三種情況1) 如果try語句塊中的所有語句正常執(zhí)行完畢,不會發(fā)生異常,那么catch語句塊總的所有語句都將會被忽略。2) 如果try語句塊在執(zhí)行過程中發(fā)生異常,并且與catch語句塊中聲明的異常類型想匹配,那么在try語句塊中剩下的代碼被忽略,而相應的

11、catch語句塊將會被執(zhí)行。匹配是值catch所處理的異常類型與所生成的異常類型一致或是它的父類。3) 如果try語句塊在執(zhí)行過程中碰到異常,而拋出的異常在catch語句塊中沒有被聲明,那么方法立刻退出。3、try-catch-finallypublic void method()try / 代碼段 1 / 產生異常的代碼段 2 catch (異常類型 ex) / 對異常進行處理的代碼段3 return;finally / 代碼段 4使用try-catch-finally處理異常的兩種情況:1) 如果try語句塊中所有語句塊正常執(zhí)行完畢,那么finally語句塊就會被執(zhí)行。2) 如果try語句

12、塊在執(zhí)行過程中碰到異常,無論這種異常能否被catch捕捉到,都將執(zhí)行finally語句塊中的代碼。注意:finally語句塊總的語句就算存在return語句也會執(zhí)行,執(zhí)行順序是執(zhí)行try語句塊或catch語句塊中return之前的語句,執(zhí)行finally語句,執(zhí)行return退出。Finally語句塊中的語句不執(zhí)行的唯一情況是在異常處理代碼中執(zhí)行System.exit(1)退出Java虛擬機。4、多重catchpublic void method()try / 代碼段 / 產生異常(異常類型2) catch (異常類型1 ex) / 對異常進行處理的代碼段 catch (異常類型2 ex) /

13、 對異常進行處理的代碼段 catch (異常類型3 ex) / 對異常進行處理的代碼段/ 代碼段排列順序為子類到父類,最后一個一般都是exception類。運行時,系統(tǒng)從上到下分別對每個catch語句塊處理的異常類型進行檢測,并執(zhí)行第一個與異常類型匹配的catch語句。執(zhí)行其中的一條catch語句后,其后的catch語句將被忽略。5、使用throws聲明拋出異常Throws可以同時聲明多個異常,之間由逗號隔開。6、使用throw拋出異常l Throw用于程序員自行產生并拋出異常,throws用于聲明該方法內拋出了異常;l Throw位于方法體內部,可以作為單獨的語句使用,throws必須跟在方

14、法參數列表的后面,不能單獨使用;l Throw拋出一個異常對象,且只能一個,throws后面跟異常類,且可以跟多個異常類。7、 異常對象常用的方法在catch語句中可以加入用戶自定義處理信息,也可以調用異常對象的方法輸出異常信息,常用方法如下: Void printStackTrace():輸出異常的堆棧信息包括程序運行到當前類的執(zhí)行流程,它將輸出熊方法調用處到異常拋出處的方法調用序列。 String getMessage():返回異常信息描述字符串,該字符串描述異常產生的原因,是printStackTrace()輸出信息的一部分。8、常見的異常類型異常類型說明Exception異常層次結構的父類ArithmeticException算術錯誤情形,如以零作除數ArrayIndexOutOfBoundsException數組下標越界NullPointerException嘗試訪問null對象成員Cl

溫馨提示

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

評論

0/150

提交評論