




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 做 善 良 的 人 學(xué)員的事就是最重要的事 課程內(nèi)容1、多態(tài)2、抽象類(lèi)3、接口多態(tài)1、多態(tài):事物的多種狀態(tài),polymorphic對(duì)象的多態(tài)性:同一個(gè)對(duì)象,可以有不同的名稱,有不同的類(lèi)型的引用指向它 本質(zhì):同一個(gè)對(duì)象有不同的名稱和描述類(lèi)型的多態(tài)性:同一個(gè)類(lèi)型的引用,將來(lái)可以指向不同的子類(lèi)對(duì)象 本質(zhì):同一個(gè)名稱可以描述多種具體的事物2、多態(tài)的前提: 1、要有子父類(lèi)(接口和實(shí)現(xiàn)類(lèi))的繼承關(guān)系(實(shí)現(xiàn)關(guān)系) 2、要有方法的重寫(xiě) 3、父類(lèi)的引用指向子類(lèi)的對(duì)象在多態(tài)中成員變量的訪問(wèn)特點(diǎn)1、編譯看左邊,運(yùn)行看左邊2、編譯的時(shí)候,要看【=】左邊的引用的類(lèi)型中,是否有該變量的定義,如果有,就編譯成功,如果沒(méi)有
2、,就編譯失敗。3、運(yùn)行的時(shí)候,要看【=】左邊的引用所屬類(lèi)型中,真正如何給變量賦值的。獲取到的是引用父類(lèi)的賦值結(jié)果。在多態(tài)中成員方法的訪問(wèn)特點(diǎn)1、編譯看左邊,運(yùn)行看右邊2、編譯的時(shí)候,要看【=】左邊的引用所屬的類(lèi)型中,是否有該方法的定義,如果有,就編譯成功,如果沒(méi)有,就編譯失敗。3、運(yùn)行的時(shí)候,要看【=】右邊的對(duì)象所屬的類(lèi)型中,是如何實(shí)現(xiàn)這個(gè)方法的。最終運(yùn)行的是子類(lèi)重寫(xiě)過(guò)的方法實(shí)現(xiàn)。多態(tài)中靜態(tài)方法的訪問(wèn)特點(diǎn)1、編譯看左邊,運(yùn)行看左邊2、編譯時(shí),要看【=】左邊的引用所屬的類(lèi)型(父類(lèi))是否有該方法的定義,如果有就編譯成功,如果沒(méi)有,就編譯失敗3、運(yùn)行的時(shí)候,要看【=】左邊的引用所屬的類(lèi)型中,如何實(shí)現(xiàn)
3、該方法的。最終運(yùn)行的是引用所屬類(lèi)型中該方法的實(shí)現(xiàn)。(方法屬于類(lèi),和父類(lèi)的方法不屬于重寫(xiě)關(guān)系)4、靜態(tài)最終解釋?zhuān)?靜態(tài)變量:存儲(chǔ)在類(lèi)的字節(jié)碼中的變量,被所有對(duì)象所共享,不隨著對(duì)象的變化而變化,都有相同的值,所以稱為靜態(tài)變量 靜態(tài)方法:只會(huì)根據(jù)引用所屬的父類(lèi),來(lái)決定運(yùn)行的內(nèi)容,運(yùn)行內(nèi)容,不會(huì)隨著子類(lèi)的變化而變化,都是引用所屬的父類(lèi)的方法實(shí)現(xiàn),所以稱為靜態(tài)方法。超人案例!超人案例!引用類(lèi)型的向上向下轉(zhuǎn)型1、向上轉(zhuǎn)型:多態(tài)的體現(xiàn) 父類(lèi)的引用指向了子類(lèi)的對(duì)象 以前:子類(lèi)的引用 = 子類(lèi)的對(duì)象 Cat c = new Cat(); 現(xiàn)在:父類(lèi)的引用 = 子類(lèi)的對(duì)象 Animal a = new Cat()
4、;double b = 1; 本質(zhì):從概念上說(shuō),把概念擴(kuò)大了,但是從功能和數(shù)據(jù)說(shuō),把訪問(wèn)范圍縮小了2、向下轉(zhuǎn)型: 本質(zhì):把曾經(jīng)擴(kuò)大的概念進(jìn)行恢復(fù);把曾經(jīng)縮小的訪問(wèn)范圍恢復(fù) 前提:曾經(jīng)向上轉(zhuǎn)型過(guò) 格式: 子類(lèi)類(lèi)型 子類(lèi)引用名稱 = (子類(lèi)類(lèi)型)父類(lèi)引用名稱;本質(zhì): 【恢復(fù)】子類(lèi)類(lèi)型原本就有的訪問(wèn)范圍多態(tài)的好處1、提高了代碼的可擴(kuò)展性2、在方法的形式參數(shù)中,使用父類(lèi)類(lèi)型的引用,將來(lái)在調(diào)用方法的時(shí)候,傳入的實(shí)際參數(shù)可以是這個(gè)父類(lèi)的所有子類(lèi)的對(duì)象。3、不在方法的參數(shù)列表中,就在普通的方法體中,使用父類(lèi)的類(lèi)型指向子類(lèi)的對(duì)象,也能提高代碼的可擴(kuò)展性。對(duì)象的來(lái)源非常廣泛,不僅僅是new出來(lái)的,(還可能是通過(guò)
5、反射獲取的,通過(guò)文件讀取的,還可能是網(wǎng)絡(luò)傳遞的,在寫(xiě)代碼的編譯階段,無(wú)法知道對(duì)象具體的子類(lèi)類(lèi)型的)需要使用父類(lèi)類(lèi)型的引用,操作不知道的子類(lèi)類(lèi)型的對(duì)象。榨汁機(jī)案例榨汁機(jī)案例抽象類(lèi)1、抽象:抽取像的,相同的相似的內(nèi)容出來(lái)2、抽象方法: 在子類(lèi)中,對(duì)同一個(gè)方法,不同的子類(lèi)有不同的實(shí)現(xiàn),不同子類(lèi)中的這些方法,就只有方法聲明是相同的,所以把方法名稱抽取到父類(lèi)中,就是抽象方法。 抽象方法:就是只有方法聲明,沒(méi)有方法實(shí)現(xiàn)的方法3、定義格式: 1、沒(méi)有方法體,只有方法實(shí)現(xiàn),連方法體的大括號(hào)都沒(méi)有,通過(guò)分號(hào)結(jié)束方法 2、在方法聲明上,需要加一個(gè)abstract關(guān)鍵字來(lái)說(shuō)明這個(gè)方法是抽象方法抽象類(lèi)1、可以定義抽象
6、方法的類(lèi),就是抽象類(lèi)2、定義格式: abstract class 類(lèi)名 抽象方法;抽象類(lèi)的特點(diǎn)抽象類(lèi)和抽象方法都需要使用abstract關(guān)鍵字聲明 abstract class 類(lèi)名 public abstract 返回值類(lèi)型 方法名稱() 抽象類(lèi)和抽象方法的關(guān)系: 1、抽象類(lèi)中,未必有抽象方法 2、抽象方法所在的類(lèi),一定是抽象類(lèi)抽象類(lèi)不能實(shí)例化(創(chuàng)建對(duì)象) 抽象類(lèi)中有抽象方法,如果能創(chuàng)建對(duì)象,就會(huì)調(diào)用沒(méi)有意義的方法 只能定義子類(lèi),重寫(xiě)(實(shí)現(xiàn))抽象方法之后,使用子類(lèi)來(lái)創(chuàng)建對(duì)象抽象類(lèi)的子類(lèi): 1、如果子類(lèi)沒(méi)有把父類(lèi)中的所有抽獎(jiǎng)方法都重寫(xiě),那么這個(gè)子類(lèi)就還是一個(gè)抽象類(lèi) 2、如果子類(lèi)重寫(xiě)了父類(lèi)中所有
7、的抽象方法,那么子類(lèi)就成了一個(gè)普通類(lèi),就可以創(chuàng)建對(duì)象抽象類(lèi)能不能實(shí)例化?(創(chuàng)建對(duì)象抽象類(lèi)如何創(chuàng)建對(duì)象)抽象類(lèi)中成員的特點(diǎn)1、成員變量的特點(diǎn): 既可以是變量、也可以是常量 但是不能被抽象2、構(gòu)造方法的特點(diǎn): 抽象類(lèi)中,有構(gòu)造方法 用于子類(lèi)創(chuàng)建對(duì)象的時(shí)候,要訪問(wèn)父類(lèi)的構(gòu)造方法 一個(gè)類(lèi)中是否需要定義構(gòu)造方法,不是取決于這個(gè)類(lèi)是否可以創(chuàng)建對(duì)象,而是取決于該類(lèi)是否可以定義成員變量3、成員方法的特點(diǎn): 可以是抽象方法:強(qiáng)制讓子類(lèi)重寫(xiě)這個(gè)抽象方法 也可以是非抽象方法:用于給子類(lèi)繼承,提高代碼的復(fù)用性程序員類(lèi):屬性(姓名、工號(hào)、工資、獎(jiǎng)金),行為(工作:軟件開(kāi)發(fā))測(cè)試工程師:屬性(姓名、工號(hào)、工資),行為(工
8、作:軟件測(cè)試)項(xiàng)目經(jīng)理類(lèi):屬性(姓名、工號(hào)、工資、獎(jiǎng)金),行為(工作:控制進(jìn)度)員工類(lèi)練習(xí)接口接口的概述廣義:一切定義規(guī)則的都是接口狹義:java中用于定義方法命名的規(guī)則就是接口 Java接口中,全都是方法的聲明,都是抽象方法好處: 一旦將命名規(guī)則定義出來(lái),【方法的調(diào)用】和【方法的實(shí)現(xiàn)】就分離開(kāi)了,可以提升開(kāi)發(fā)效率,降低代碼的耦合性接口的特點(diǎn)1、接口的定義:使用interface關(guān)鍵字,編譯也是生成一個(gè)【.class】文件 interface 接口名稱 方法聲明的定義;2、接口中,只可以聲明抽象方法(只能定義方法起名字的規(guī)則)3、類(lèi)可以實(shí)現(xiàn)接口:使用implements關(guān)鍵字 實(shí)現(xiàn):接口中只有
9、方法名稱的定義,在類(lèi)中把接口方法的真正完成邏輯寫(xiě)出來(lái) class 類(lèi)名稱 implements 接口名稱 對(duì)接口中方法的實(shí)現(xiàn);4、接口的實(shí)例化:不能直接實(shí)例化 定義實(shí)現(xiàn)類(lèi),實(shí)現(xiàn)接口,類(lèi)創(chuàng)建對(duì)象,對(duì)象調(diào)用方法5、接口的實(shí)現(xiàn)類(lèi)前途: 是一個(gè)抽象類(lèi),該類(lèi)沒(méi)有實(shí)現(xiàn)接口中的所有抽象方法 是一個(gè)普通類(lèi),該類(lèi)實(shí)現(xiàn)了接口中的所有抽象方法接口中成員的特點(diǎn)1、成員變量: 只能是常量,不能是變量 默認(rèn)加上public static final 建議手動(dòng)加上2、構(gòu)造方法: 沒(méi)有構(gòu)造方法。接口中無(wú)法定義成員變量,所以不需要使用構(gòu)造方法給成員變量初始化賦值。 雖然接口有自己的實(shí)現(xiàn)類(lèi),但是對(duì)于實(shí)現(xiàn)類(lèi)而言,不去訪問(wèn)接口中的構(gòu)
10、造方法,而是訪問(wèn)實(shí)現(xiàn)類(lèi)的父類(lèi)的構(gòu)造方法。(父類(lèi)是親爹、接口是干爹,找親爹的構(gòu)造方法,而不是干爹的)3、成員方法: 只能是抽象方法,不能是非抽象方法 默認(rèn)加上public abstract 建議手動(dòng)加上類(lèi)與類(lèi)、類(lèi)與接口、接口與接口之間的關(guān)系2、類(lèi)與接口: 實(shí)現(xiàn)關(guān)系,使用implements 可以單實(shí)現(xiàn)、也可以多實(shí)現(xiàn)、不能多層實(shí)現(xiàn)(一旦實(shí)現(xiàn)變成了一個(gè)類(lèi)) 多實(shí)現(xiàn)的格式: class 實(shí)現(xiàn)類(lèi)類(lèi)名 implements 接口1, 接口2, 接口3. 重寫(xiě)所有接口中的所有抽象方法 多實(shí)現(xiàn)沒(méi)有安全隱患:即使兩個(gè)接口中有一樣的方法聲明,但是在類(lèi)中也只有一個(gè)實(shí)現(xiàn) 在繼承一個(gè)父類(lèi)的前提下,還可以實(shí)現(xiàn)多個(gè)接口 格
11、式: class 子類(lèi)類(lèi)名 extends 父類(lèi)類(lèi)名 implements 接口1, 接口2. /重寫(xiě)父類(lèi)和所有接口中的所有抽象方法1、類(lèi)與類(lèi) 繼承的關(guān)系,使用extends 可以單繼承、不可以多繼承、可以多層繼承接口練習(xí)題建立一個(gè)工程,該工程中包含如下內(nèi)容:1.定義一個(gè)接口Ishape,該接口中包含兩個(gè)抽象方法:周長(zhǎng)和面積;2.分別定義兩個(gè)類(lèi),矩形類(lèi):rectangle,三角形類(lèi):Triangle。這兩個(gè)類(lèi)都實(shí)現(xiàn)接口Ishape,同時(shí)各類(lèi)擁有自己的私有屬性,比如說(shuō)矩形的屬性長(zhǎng)和寬,三角形的屬性三個(gè)邊長(zhǎng)和高。給每個(gè)類(lèi)添加相應(yīng)的構(gòu)造方法,使各私有屬性都能獲得相應(yīng)的值。3.定義一個(gè)測(cè)試類(lèi)TestShape,在該類(lèi)中定義一個(gè)方法,只要調(diào)用該方法就能獲得對(duì)應(yīng)類(lèi)型的周長(zhǎng)和面積,然后在該類(lèi)中進(jìn)行相關(guān)測(cè)試。.按如下要求編寫(xiě)Java程序: (1)定義接口A,里面抽象方法double area()。 (2)定義接口B,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療科技與社會(huì)可持續(xù)發(fā)展的關(guān)系研究
- 教育心理學(xué)視角下的智能教學(xué)工具應(yīng)用研究
- 智慧城市公共服務(wù)體系的創(chuàng)新與突破
- 2025年中國(guó)無(wú)帽緣式導(dǎo)位梢行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年鄉(xiāng)村振興中職業(yè)技能培訓(xùn)與農(nóng)村教育改革與創(chuàng)新報(bào)告
- 2025年中國(guó)固定鉸鏈行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年中國(guó)亞光仿銀箔行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年中國(guó)T/C燈罩行業(yè)投資前景及策略咨詢研究報(bào)告
- 教育評(píng)估新篇章以技術(shù)衡量學(xué)習(xí)成效
- 企業(yè)辦公樓宇的智能緊急處理機(jī)制設(shè)計(jì)研究
- 八年級(jí)歷史下冊(cè)核心知識(shí)點(diǎn)、難點(diǎn)、重點(diǎn)總結(jié)
- (高清版)JTGT D81-2017 公路交通安全設(shè)施設(shè)計(jì)細(xì)則
- 2023-2024全國(guó)初中物理競(jìng)賽試題-杠桿(解析版)
- 新概念馬學(xué)智慧樹(shù)知到期末考試答案章節(jié)答案2024年內(nèi)蒙古農(nóng)業(yè)大學(xué)
- 《臨床試驗(yàn)生物樣本倫理管理指南(征求意見(jiàn)稿)》
- (正式版)SHT 3551-2024 石油化工儀表工程施工及驗(yàn)收規(guī)范
- 乳腺癌患者術(shù)后心理護(hù)理
- 國(guó)際貨運(yùn)代理實(shí)務(wù) 全套課件
- 國(guó)家開(kāi)放大學(xué)《Python語(yǔ)言基礎(chǔ)》形考任務(wù)4參考答案
- 中學(xué)生心理健康診斷測(cè)驗(yàn)(MHT)
- 人力資源薪酬專(zhuān)員個(gè)人月工作計(jì)劃
評(píng)論
0/150
提交評(píng)論