




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第一階段 Java核心及基礎(chǔ)應(yīng)用 -Java面向?qū)ο笏枷爰昂诵?楊振宇 2011 . 11第1頁,共30頁。Java 面向?qū)ο笏枷爰昂诵?一、接口、抽象類二、內(nèi)部類、匿名類和包 三、字符串類 四、異常處理 五、JDK 核心API和高級類 六、圖形界面編程 七、IO輸入輸出流 八、多線程九、集合框架后續(xù):網(wǎng)絡(luò)編程、JDBC前期基礎(chǔ):Java基礎(chǔ)、面向?qū)ο缶幊獭㈩惡屠^承 第2頁,共30頁。6.1.1 類的定義人:張三?李四?電話機(jī)?茶具?沙發(fā)?第3頁,共30頁。一、接口和抽象類 1、接口的概念2、接口的實(shí)現(xiàn)3、抽象類和抽象方法4、接口回調(diào)5、接口作參數(shù)6、類的多態(tài)第4頁,共30頁。Java語言中,
2、一個子類只可以繼承一個直接父類,這被稱為單一繼承。使用單一繼承雖然各個類之間的層次關(guān)系清楚、可讀性強(qiáng),但是在處理一些復(fù)雜問題時,則會顯得功能不夠強(qiáng)大。因此,Java語言提供了接口功能,來實(shí)現(xiàn)多重繼承。接口是用來組織類內(nèi)容的一種程序結(jié)構(gòu),一個類可以有多個接口。在Java語言中,一個對象的行為一般是與其具體的實(shí)現(xiàn)細(xì)節(jié)分開的。這種對象行為與行為的具體實(shí)現(xiàn)細(xì)節(jié)分離的設(shè)計(jì)方法稱為抽象。1、接口的概念第5頁,共30頁。在Java語言中,使用接口來定義某個類所支持的操作。因此,在接口中,所有的方法均為抽象方法。接口定義的僅僅是實(shí)現(xiàn)某一特定功能的接口和其規(guī)范,而并沒有真正實(shí)現(xiàn)這個功能。這個功能的真正實(shí)現(xiàn)是在應(yīng)
3、用這個接口的類中完成的,要由類來具體定義接口中各個抽象方法的語句體。 例如:如果我們定義了一個名為Calculate的接口,其中有add()和minus()兩個抽象方法,那么任何實(shí)現(xiàn)該接口的類都必須支持其中的add()和minus()方法,也就是說在類中具體描述這兩個方法的語句體內(nèi)容。 1、接口的概念第6頁,共30頁。創(chuàng)建接口的形式如下。public interface 接口名 public static final 類型 變量名 = 常量數(shù)據(jù); public abstract 方法類型 方法名( 參數(shù) ); 其中,關(guān)鍵字interface是用來定義接口的,接口名要符合Java對標(biāo)識符的規(guī)定,
4、public是接口的唯一訪問控制修飾符。如果沒有使用任何訪問控制修飾符,則表示只有與該接口定義在同一個包中的類才可以訪問這個接口。接口中的變量只能是常量形式的變量,方法也必須是抽象方法。因?yàn)榻涌谥械姆椒ň鞘褂眯揎椃鹥ublic和關(guān)鍵字abstract修飾的,所以在書寫時可以省略這兩個單詞。2、接口的實(shí)現(xiàn)第7頁,共30頁。例如:在下面的接口程序中,我們定義了2個常量和3個抽象方法。interface Calculate int i = 10; String s = 計(jì)算結(jié)果如下。 boolean isZhishu(); int add( int a, int b ); double minus
5、( int a, int b ); 創(chuàng)建接口僅僅給出了抽象方法,如果要具體的實(shí)現(xiàn)接口所定義的方法,則需要某個類為接口中的每個抽象方法定義具體的操作來實(shí)現(xiàn)這個接口的功能。2、接口的實(shí)現(xiàn)第8頁,共30頁。實(shí)現(xiàn)接口的形式為:public class 類名 implements 接口名1, 接口名2, 語句體 其中,使用關(guān)鍵字implements來定義這個類的接口,一個類可以實(shí)現(xiàn)多個接口,使用逗號將它們分隔開。注意三點(diǎn): 1)如果實(shí)現(xiàn)某個接口的類不是使用關(guān)鍵字abstract修飾的抽象類,則在類中必須定義實(shí)現(xiàn)接口所有抽象方法的具體實(shí)例方法,并且該方法必須與接口中的方法定義完全一致,也就是說具有完全相同
6、的參數(shù)個數(shù)和類型,以及方法的返回類型。2、接口的實(shí)現(xiàn)第9頁,共30頁。 2)如果實(shí)現(xiàn)某個接口的類是使用關(guān)鍵字abstract修飾的抽象類,則它可以不實(shí)現(xiàn)該接口所有的方法。但是在這個抽象類的任何一個非抽象子類中,必須具體定義其父類所實(shí)現(xiàn)的接口中的所有抽象方法。另外,可以定義一個新的接口,用extend關(guān)鍵字去繼承一個已有的接口; 3)接口的抽象方法的訪問控制符均為public,所以類在實(shí)現(xiàn)這些抽象方法時,必須使用public修飾符。例如:public interface Num int num = 10; public void printNum();public class TestNum i
7、mplements Num public void printNum() System.out.println( Num= + Num ); 2、接口的實(shí)現(xiàn)第10頁,共30頁。 抽象類的意義與接口基本一樣,都是為了更好的控制類的抽象結(jié)構(gòu)。定義抽象類的形式為:abstract class 類名 語句體1)抽象類中的方法可以是實(shí)例方法,也可以抽象方法。但是如果一個類含有抽象方法,則此類必須為抽象類。而其如果一個類是抽象類的子類且其不是抽象類,則該子類必須實(shí)現(xiàn)父類的所有抽象方法。2)抽象方法定義了一個抽象類的功能,但是沒有給出該功能的具體實(shí)現(xiàn)過程。定義抽象方法的形式為: abstract 方法類型
8、方法名( 參數(shù) );3)抽象方法不能使用修飾符static和final修飾。3、抽象類和抽象方法第11頁,共30頁。 接口與抽象類有相似之處,但也有區(qū)別,下表反映了兩者的區(qū)別。3、抽象類和抽象方法第12頁,共30頁。案例 接口的實(shí)現(xiàn)與運(yùn)用目的:(1)學(xué)習(xí)如何定義接口;(2)掌握接口的實(shí)現(xiàn)方式;(3)使用實(shí)現(xiàn)了接口的類;(4)理解接口與抽象類的區(qū)別。任務(wù): 設(shè)計(jì)和實(shí)現(xiàn)一個 Soundable 接口,該接口具有發(fā)聲功能,同時還能夠調(diào)節(jié)聲音大小。Soundable接口的這些功能將會由3種聲音設(shè)備來具體實(shí)現(xiàn),它們分別是收音機(jī)Radio、隨身聽Walkman 和手機(jī)Mobilephone。最后還要設(shè)計(jì)一
9、個應(yīng)用程序類來使用這些實(shí)現(xiàn)了Soundable 接口的聲音設(shè)備類。程序運(yùn)行時,先詢問用戶想聽哪種設(shè)備,然后程序就會按照該設(shè)備的工作方式來發(fā)出聲音。程序運(yùn)行的效果如圖所示。第13頁,共30頁。思考:(1)請問在InterfaceTest 類中,SoundDevice數(shù)組是什么類型的,該數(shù)組為什么能存放3種不同的對象Radio、Walkman 和Mobilephone 呢?(2)在程序中,Soundable 是一個接口,那么該接口是否可以被實(shí)例化呢?請?jiān)贗nterfaceTest 類的main()方法中加入以下語句試驗(yàn)一下,并分析結(jié)果。案例 接口的實(shí)現(xiàn)與運(yùn)用第14頁,共30頁。(3)現(xiàn)在假定要為程
10、序增加一個鬧鐘類Clock,該類也實(shí)現(xiàn)Soundable 接口,能夠發(fā)出滴答聲,請將以下的Clock 類加入到InterfaceTest.java 程序中,并在InterfaceTest 類的main()方法中加入SoundDevice3 = new Clock();語句。修改之后,重新編譯 InterfaceTest.java 并運(yùn)行它,觀察結(jié)果。案例 接口的實(shí)現(xiàn)與運(yùn)用第15頁,共30頁。(4)在第(3)小題中由于新加入的Clock 類僅僅實(shí)現(xiàn)了Soundable 接口的stopSound()和playSound()方法,而increaseVolume()和decreaseVolume()方
11、法沒有實(shí)現(xiàn),因此它實(shí)質(zhì)上是一個抽象類,而抽象類是不能實(shí)例化的,所以導(dǎo)致編譯錯誤。但是按照常理,鬧鐘的滴答聲確實(shí)是不可以增大或減小的,那么如何解決這個問題呢?現(xiàn)在請?jiān)贑lock 類中加入下面兩個含空方法體的方法實(shí)現(xiàn),再編譯運(yùn)行程序,看看會有什么變化。案例 接口的實(shí)現(xiàn)與運(yùn)用(5)現(xiàn)在請模仿本實(shí)驗(yàn)的程序設(shè)計(jì)出一個自己的接口程序,要求先設(shè)計(jì)一個moveable可移動接口,然后分別設(shè)計(jì)3個類,即汽車Car、輪船Ship、飛機(jī)Aircraft 來實(shí)現(xiàn)該接口,最后設(shè)計(jì)一個應(yīng)用程序來使用它們。第16頁,共30頁。4、接口回調(diào)接口回調(diào)是指:可以把實(shí)現(xiàn)某一接口的類創(chuàng)建的對象的引用賦給該接口聲明的接口變量中。那么該
12、接口變量就可以調(diào)用被類實(shí)現(xiàn)的接口中的方法。實(shí)際上,當(dāng)接口變量調(diào)用被類實(shí)現(xiàn)的接口中的方法時,就是通知相應(yīng)的對象調(diào)用接口的方法。實(shí)例運(yùn)行第17頁,共30頁。5、接口作參數(shù)一個方法的參數(shù)是接口類型,就可以將任何實(shí)現(xiàn)該接口的類的實(shí)例的引用傳遞給該接口參數(shù),接口參數(shù)就可以回調(diào)類實(shí)現(xiàn)的接口方法。 實(shí)例運(yùn)行第18頁,共30頁。6、類的多態(tài)1)多態(tài)的概念2)動態(tài)綁定第19頁,共30頁。 多態(tài)是指程序的多種表現(xiàn)形式。除了方法的重載,子類對父類方法的覆蓋或者子類對抽象父類中的抽象方法的具體定義也是類多態(tài)的一種表現(xiàn)形式。 所謂覆蓋,是在定義子類的方法時,使用與其父類中相同的名稱和參數(shù)。在執(zhí)行程序時,將執(zhí)行子類的方法
13、,而覆蓋父類的方法。1)多態(tài)的概念第20頁,共30頁。例如:public double sum( double a, double b ) return a + b;在子類中有方法名和參數(shù)都完全相同,但是語句體內(nèi)容不同的方法public double sum( double a, double b ) return a * b;當(dāng)編寫應(yīng)用程序,通過子類對象調(diào)用sum()方法時,只會執(zhí)行子類中求積的方法,而不會執(zhí)行父類中求和的方法。 1)多態(tài)的概念第21頁,共30頁。利用多態(tài)性,可以將一個方法的形參設(shè)為超類類型,而將傳遞給該方法的實(shí)參既可以是超類對象也可以是子類對象。具體執(zhí)行時,Java 會自動
14、根據(jù)實(shí)際對象所屬的類型來選擇方法執(zhí)行,因此多態(tài)性增強(qiáng)了編程的靈活性和系統(tǒng)的維護(hù)性和可擴(kuò)展性。1)多態(tài)的概念第22頁,共30頁。2)動態(tài)綁定在 Java 中超類往往定義出一個通用的方法,而其不同的實(shí)現(xiàn)則由它的不同的子類來完成。當(dāng)通過對象來調(diào)用這樣一個方法時,Java會依據(jù)運(yùn)行時該對象的實(shí)際類型來決定用方法的哪一個版本來執(zhí)行,也即動態(tài)地綁定一個方法來執(zhí)行。動態(tài)綁定的前提是:Java 允許將子類對象賦給超類類型的變量,每個子類對象同時也是其超類的對象。第23頁,共30頁。案例 多態(tài)性與動態(tài)綁定目的:(1)掌握多態(tài)性在繼承中的運(yùn)用;(2)理解動態(tài)綁定的含義;(3)學(xué)會使用抽象類;(4)了解成員變量的隱
15、藏。任務(wù): 請?jiān)O(shè)計(jì)3個類,分別是學(xué)生類Student,本科生類Undergraduate,研究生類Postgraduate,其中Student 類是一個抽象類,它包含一些基本的學(xué)生信息如姓名、所學(xué)課程、課程成績等,而Undergraduate 類和Postgraduate 都是Student 類的子類,它們之間的主要差別是計(jì)算課程成績等級的方法有所不同,研究生的標(biāo)準(zhǔn)要比本科生的標(biāo)準(zhǔn)高一些,如下表所示。第24頁,共30頁。本科生標(biāo)準(zhǔn)研究生標(biāo)準(zhǔn)80100優(yōu)秀90100優(yōu)秀7079良好8089良好6069一般7079一般5059及格6069及格50 以下不及格60以下不及格 假設(shè)某班級里既有本科生也
16、有研究生,請編寫程序統(tǒng)計(jì)出全班學(xué)生的成績等級并顯示出來。此題關(guān)鍵是設(shè)計(jì)一個學(xué)生數(shù)組,既能存放本科生對象,又能存放研究生對象,程序的運(yùn)行效果如圖所示。案例 多態(tài)性與動態(tài)綁定第25頁,共30頁。思考:(1)在Polymorphism 類中有一個循環(huán)語句用來計(jì)算每個學(xué)生的成績等級 for (int i = 0; I 5; i+) studentsi.calculateGrade(); 請問這里的 calculateGrade()方法是按照研究生的標(biāo)準(zhǔn)還是按照本科生的標(biāo)準(zhǔn)來計(jì)算的。(2)請問在程序Polymorphism 類中,哪些語句體現(xiàn)了子類的對象可以賦值給父類的引用變量。案例 多態(tài)性與動態(tài)綁定第
17、26頁,共30頁。(3)現(xiàn)在請?jiān)诔绦騊olymorphisrn 類的main()方法中添加如下的語句Student st = new Student(李明);此時編譯是否會報(bào)錯,如有錯誤,請解釋原因。(4)在程序中要判斷studenti中存放的究竟是Undergraduate 對象還是Postgraduate 對象,只需要調(diào)用studenti.getType()方法即可,然而Java 提供了一個instanceof 運(yùn)算也可以完成這一任務(wù),它能判斷出一個對象所屬的類,請將以下代碼添加到程序中進(jìn)行測試。案例 多態(tài)性與動態(tài)綁定第27頁,共30頁。(5)現(xiàn)在請模仿本程序,新增一個高中生類,它計(jì)算成績等級的標(biāo)準(zhǔn)采用如下方法,然后在主程序中測試并使用它。案例 多態(tài)性與動態(tài)綁定第28頁,共30頁。使用接口要點(diǎn) 如果一個類使用了某個接口,那么這個類必須實(shí)該接口的所有方法,即為這些方法提供方法體。在類中實(shí)現(xiàn)接口的方法時,方法的名字、返回類參數(shù)個數(shù)及類型必須與接口中的完全一致。接口中的方法被默認(rèn)是public的,所以類在實(shí)現(xiàn)口方法時,一定要用public來修飾。如果接口方法名有返回類型,那么在類中實(shí)現(xiàn)該口方法時,方法體至少要有一個return
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/LTXH 002-2023“天賦河套”區(qū)域公用品牌黃柿子汁
- T/TMAC 094-2024公路工程玄武巖纖維復(fù)合筋設(shè)計(jì)與施工規(guī)范
- 江蘇省蔬菜買賣合同4篇
- 上海二建試題及答案
- 2025年舞蹈教練聘用合同2篇
- 個體經(jīng)營短期借款協(xié)議書8篇
- 晚會演出合同協(xié)議書范本3篇
- 文娛與體育課件
- 2025遼寧師范大學(xué)輔導(dǎo)員考試試題及答案
- 2025益陽教育學(xué)院輔導(dǎo)員考試試題及答案
- 人保農(nóng)險(xiǎn)理賠試題
- Machine-Cmk-設(shè)備能力指數(shù)Cmk分析表
- 心理健康教育特色學(xué)校建設(shè)路徑
- 2025年全國保密教育線上培訓(xùn)考試試題庫【完整版】附帶答案詳解
- (二模)2025年5月濟(jì)南市高三高考針對性訓(xùn)練英語試卷(含答案解析)
- 修腳師勞動合同(新標(biāo)準(zhǔn)版)6篇
- ISO27001:2022信息安全管理體系全套文件+表單
- 大學(xué)體育與體質(zhì)健康(山東聯(lián)盟)智慧樹知到期末考試答案章節(jié)答案2024年中國石油大學(xué)(華東)
- 網(wǎng)絡(luò)食品交易第三方平臺備案表
- 旅游景區(qū)財(cái)務(wù)制度及流程
- Dell 2950 SAS5RAID完全配置手冊
評論
0/150
提交評論