




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、西南科技大學(xué)網(wǎng)絡(luò)教育系列課程西南科技大學(xué)網(wǎng)絡(luò)教育系列課程高級語程序設(shè)計(jì)高級語程序設(shè)計(jì)(Java)第五章 繼承、接口與范型高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/類的繼承 繼承的定義l 類繼承就是子類繼承父類的成員變量和方法作為自己的成員變量和方法。l 繼承是一種由已有的類創(chuàng)建新類的機(jī)制。l 執(zhí)行繼承時(shí),子類將獲得父類的屬性和方法,并具有自己特有的屬性和方法。Emoloyee類:類: name sexWorker類:類: category workshopOfficer類:類: empClass vehicle高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/ 繼承一個(gè)
2、類l extends關(guān)鍵字用于繼承類。l 聲明一個(gè)繼承父類的類的通常形式如下: class subclass-name extends superclass-name /類體 沒有關(guān)鍵字extends,默認(rèn)父類為Object。 單繼承,只能有一個(gè)父類,即extends后面不能有多個(gè)類的名字高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/ 子類的繼承性l Java不支持多重繼承,一個(gè)子類只有一個(gè)父類。l Object類是所有類的父類。l 子類和父類在同一包中的繼承性u 子類自然地繼承了其父類中非private的成員變量和方法作為自己的成員變量和方法。u 子類繼承到的成員變量以及方法的訪
3、問權(quán)限保持不變。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/l 子類和父類不在同一包中的繼承性u 子類只能繼承其父類中的public和protected成員變量和方法作為自己的成員變量和方法。u 子類繼承到的成員變量以及方法的訪問權(quán)限保持不變。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/ 子類對象的構(gòu)造過程l 子類的構(gòu)造方法總是先調(diào)用父類的某個(gè)構(gòu)造方法,如果子類的構(gòu)造方法沒有指明使用父類的哪個(gè)構(gòu)造方法,子類就調(diào)用父類的不帶參數(shù)的構(gòu)造方法。l 子類對象構(gòu)造的結(jié)果u 將子類中聲明的成員變量做為子類對象的成員變量,并分配內(nèi)存空間。u 父類的成員變量也都分配了內(nèi)存空間,但只
4、將其中一部分(繼承的那部分)做為子類對象的成員變量。 高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/子類未繼承的成員子類未繼承的成員 引用子類對象 子類繼承的成員 子類繼承的成員 子類聲明的成員 子類聲明的成員子類對象內(nèi)存示意圖高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/ 成員變量的隱藏和方法的重寫l 成員變量的隱藏u 當(dāng)在子類中定義和父類中同名的成員變量時(shí),子類就隱藏了繼承的成員變量。class A protected double y=12.56;class B extends A int y=0; void g() y=y+100; System.out.pri
5、ntf(y=%dn,y); 使用關(guān)鍵字super可以使用父類中被子類隱藏掉的成員變量。super.y高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/l 方法重寫u 方法重寫是指:子類中定義一個(gè)方法,并且這個(gè)方法的名字、返回類型、參數(shù)個(gè)數(shù)和類型與從父類繼承的方法完全相同。u 子類通過方法重寫來隱藏繼承的方法。u 子類通過方法的重寫可以把父類的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為。u 使用關(guān)鍵字super可以使用父類中被子類隱藏掉的成員方法。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/l 繼承過程中,protected的訪問權(quán)限不變class A protected int n
6、 = 5; protected int increaseNum(int a) return a+1; ABCDclass E D object1 = new D();object1.firstnum = 10;object1.n = 50;要求E類和D類在同一個(gè)包中要求E類和A類在同一個(gè)包中高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/ Super關(guān)鍵字l Super關(guān)鍵字有兩種用法u 子類使用super調(diào)用父類的構(gòu)造方法。super必須是子類構(gòu)造方法中的第一條語句。u 子類使用super調(diào)用被子類隱藏的成員變量和方法。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/ f
7、inal類和final方法l final類不能被繼承,即不能有子類l final方法不能被重寫l 如果一個(gè)類聲明為final,那么它的成員方法會被自動設(shè)定為final方法。l 當(dāng)一個(gè)變量被final修飾時(shí),也不能被修改,這時(shí),就成為常量,并且這時(shí)的常量名常常大寫。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/ 使用abstract類l 用關(guān)鍵字abstract修飾類稱為abstract類。l 在繼承的過程中,祖先類的方法更通用,這樣,可以把盡可能多的通用屬性和功能放到祖先類中,作為繼承的基礎(chǔ)。u 這樣一個(gè)祖先類,抽象程度更高,可以定義為一個(gè)抽象類。l 抽象類不能被實(shí)例化,即不能用n
8、ew運(yùn)算符創(chuàng)建對象,必須產(chǎn)生其子類,由子類創(chuàng)建對象。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/abstract class Person private String; public Person(String n) name = n; public abstract String getDescription(); public String getName() return name; 對于abstract方法,只允許聲明,不允許實(shí)現(xiàn)高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/class Student extends Person private Strin
9、g major; pulbic Student(String n,String m) super(n); major = m; public String getDescription() return “a student majoring” + major; 抽象類的子類必須實(shí)現(xiàn)abstract方法,即重寫父類的abstract方法。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/接 口 接口的定義l 接口方法定義和常量值的集合,而沒有方法的實(shí)現(xiàn)。l 通過接口可以實(shí)現(xiàn)不相關(guān)類的相同行為,而不需要考慮這些類之間的層次關(guān)系l 使用關(guān)鍵字interface定義接口public inte
10、rface interfaceName extends SuperInterfaceList / 常量和方法定義高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/ 接口的使用l 接口不能實(shí)例化,即不能用new運(yùn)算符創(chuàng)建對象。l 一個(gè)類通過使用關(guān)鍵字implements聲明自己實(shí)現(xiàn)一個(gè)或多個(gè)接口。l 在類體中可以使用接口中定義的常量,而且必須實(shí)現(xiàn)接口中定義的所有方法。l 接口中的方法是自動公有的,在實(shí)現(xiàn)接口時(shí)必須把方法聲明為public。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/interface Collection int MAX_NUM=100; void add
11、(Object obj); void delete (Object obj); Object find (Object obj); int currentCount ( );class FIFOQueue implements Collectionvoid add ( Object obj )void delete( Object obj )Object find( Object obj )int currentCount()高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/內(nèi)部類l 一個(gè)類中聲明另一個(gè)類,這樣的類稱作內(nèi)部類,而包含內(nèi)部類的類成為外嵌類。l 內(nèi)部類同類中聲明的方法或成員
12、變量一樣,一個(gè)類把內(nèi)部類看作是自己的成員。l 外嵌類的成員變量在內(nèi)部類中仍然有效,內(nèi)部類中的方法也可以調(diào)用外嵌類中的方法。l 內(nèi)部類的類體中不可以聲明類變量和類方法。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/class A private double y=12.56; class B int y=0; public void g() y=y+100; System.out.printf(y=%dn,y); 高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/匿名類l 類創(chuàng)建對象時(shí),除了構(gòu)造方法還有類體,稱作匿名類。new Hello () public int getN
13、um() /匿名類的類體 l 匿名類也是內(nèi)部類,因此匿名類可以訪問外嵌類中的成員變量和方法,不可以聲明類變量和類方法。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/l 匿名類的主要用途就是向方法的參數(shù)傳值。this.addwindowListener(new WindowAdaPter() publie void windowClosing(WindowEvent e) System.exit(0); );高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/異常類l 在錯(cuò)誤發(fā)生點(diǎn),你可能不知道如何處理,但你知道無法再繼續(xù)下去;你得停下來,而必須有某個(gè)地點(diǎn)的某個(gè)人知道如何處理才
14、行,這就是異常及其處理。l Java運(yùn)行環(huán)境就用異常類Exception的相應(yīng)子類創(chuàng)建一個(gè)異常對象,并等待處理異常。 異常處理l 使用trycatch語句捕獲異常。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/l 語法結(jié)構(gòu) try 可能產(chǎn)生異常的代碼段; catch(異常類名1 對象名1) 處理語句組1; catch(異常類名2 對象名2) 處理語句組2; 高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/public class ExceptionExample public static void main(String args) int n=0,m=0,t=0; t
15、ry t=9999; m=Integer.parseInt(8888); n=Integer.parseInt(12s3a); System.out.println(我沒有機(jī)會輸出); catch(Exception e) System.out.println(發(fā)生異常); n=123; System.out.println(n=+n+,m=+m+,t=+t); 不能轉(zhuǎn)換成數(shù)字,出現(xiàn)異常catch捕獲并處理try語句塊里面的異常高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/l 需要注意的問題u try語句塊必須有catch語句塊或finally語句塊匹配。u try塊內(nèi)的任何代碼拋
16、出了由catch指定的異常,則: 程序跳過try塊的其他代碼;程序執(zhí)行catch語句塊中的代碼。u 如果try塊內(nèi)沒有代碼出現(xiàn)異常,則跳過catch語句。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/l throws語句u 通過聲明方法來拋出異常,由調(diào)用者處理。u throws可以列舉方法可能引發(fā)的所有異常。public static void main(String args) throws IOException i=Integer.parseInt(din.readLine(); .u Java中定義好了一些異常類,可以使用throws語句拋出該異常,由Java運(yùn)行環(huán)境自動處
17、理,比如:高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/ 自定義異常類l 可以擴(kuò)展Exception類實(shí)現(xiàn)自定義異常類。l 自定義異常類必須是java.lang.Exception類(或者Exception類的子類)的子類。l java.lang.Exception類的有兩個(gè)構(gòu)造方法: Exception();Exception(String message)。SimpleException() super(); l 自定義異常類可以不定義構(gòu)造方法。高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/class SimpleException extends Exceptio
18、n public MyException() public class MyExceptionDemo public void f() throws SimpleException System.out.println(Throw SimpleException from f(); throw new SimpleException(); public static void main(String args) SimpleExceptionDemo sed = new SimpleExceptionDemo(); try sed.f(); catch(SimpleException e) System.out.println(e); System.out.println(Caught it!); 運(yùn)行結(jié)果:Throw SimpleException from f()SimpleExceptionCaught it!高級語言程序設(shè)計(jì)高級語言程序設(shè)計(jì)(Java) http:/泛型類l 泛型(Generics)是SDK1.5中推出的,其主要目的是可以建立具有類型安全的集合框架,如鏈表、散列映射等數(shù)據(jù)結(jié)構(gòu)。 泛型類的聲明l 可以使用“class 名
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 東莞美容院加盟合同范本
- 個(gè)人房產(chǎn)與中介合同范本
- 先拿貨后付款合同范例
- 2024年吳忠市人民醫(yī)院自主招聘事業(yè)單位工作人員考試真題
- 加盟授權(quán)合同范例范例
- 農(nóng)村空地出售合同范本
- 2024年曲靖六十九醫(yī)院人才招聘考試真題
- 以資抵債合同范本
- 2024年廣州市天河區(qū)體育西路小學(xué)聘用制專任教師招聘考試真題
- 創(chuàng)意園廠房合同范例
- 2025年企業(yè)法務(wù)顧問聘用協(xié)議范本
- 無菌手術(shù)臺鋪置的細(xì)節(jié)管理
- 《康復(fù)評定技術(shù)》課件-第五章 運(yùn)動控制
- 議論文8(試題+審題+范文+點(diǎn)評+素材)-2025年高考語文寫作復(fù)習(xí)
- 【理特咨詢】2024生成式人工智能GenAI在生物醫(yī)藥大健康行業(yè)應(yīng)用進(jìn)展報(bào)告
- 2025新人教版英語七年級下單詞默寫表(小學(xué)部分)
- 2025年春新外研版(三起)英語三年級下冊課件 Unit6第1課時(shí)Startup
- 2025江蘇蘇州高新區(qū)獅山商務(wù)創(chuàng)新區(qū)下屬國企業(yè)招聘9人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《蒙牛集團(tuán)實(shí)施財(cái)務(wù)共享過程中存在的問題及優(yōu)化建議探析》8800字(論文)
- 平拋運(yùn)動的經(jīng)典例題
- 錄井作業(yè)現(xiàn)場風(fēng)險(xiǎn)評估及控制措施
評論
0/150
提交評論