java多態(tài)演講課件_第1頁
java多態(tài)演講課件_第2頁
java多態(tài)演講課件_第3頁
java多態(tài)演講課件_第4頁
java多態(tài)演講課件_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java

基礎(chǔ)知識多態(tài)www.安博思軟多態(tài)(Polymorphism)所謂多態(tài),是指把類中具有相似功能的不同方法使用同一個方法名來實現(xiàn),從而可以使用相同的方式來調(diào)用這些具有不同功能的同名方法。簡單來說就是多態(tài)是具有表現(xiàn)多種形態(tài)的能力的特征。www.安博思軟彩色打印機打印機黑白打印機打印效果:彩色打印效果:黑白打印打印Java中的引用變量有兩個類型,一個是編譯時的類型,一個是運行時的類型,編譯時的類型由聲明該變量時使用的類型決定,運行時的類型由實際賦給該變量的對象決定。如果編譯時的類型與運行時的類型不一致就會出現(xiàn)所謂的多態(tài)。(Polymorphism)www.為什么會出現(xiàn)多態(tài)?安博思軟www.編譯時多態(tài)性(靜態(tài)綁定)

對于多個同名方法,如果在編譯時能夠確定執(zhí)行同名方法中的哪一個,則稱為編譯時多態(tài)性。運行時多態(tài)性(動態(tài)綁定)如果在編譯時不能確定,只能在運行時才能確定執(zhí)行多個同名方法中的哪一個,則稱為運行時多態(tài)性。多態(tài)性有兩種:www.classTest

{

voidprint()

{

System.out.println(“hello”);

}

voidprint(Stringx)

{

System.out.println(“hello”+x);

}

publicstaticvoidmain(String[]args)

{

Testts=newTest();

ts.print();

ts.print(“jack”);

}

}

classTest

{

voidprint()

{

System.out.println("helloTest");

}

www.

classAextendsTest

{

voidprint()

{

System.out.println("helloA");

}

publicstaticvoidmain(String[]args)

{

Testa=newA();

a.print();

}

}

靜態(tài)綁定動態(tài)綁定

可以看到一個類中成員方法的重載,也就是一個靜態(tài)綁定,系統(tǒng)會在你編譯的時候根據(jù)你調(diào)用的方法參數(shù)列表來動態(tài)的決定調(diào)用哪一個函數(shù)

可以看到子類覆寫了父類的方法,也就是一個動態(tài)綁定,系統(tǒng)會在運行時動態(tài)的決定調(diào)用子類覆寫后方法來實現(xiàn)1:繼承

2:重寫(重寫父類繼承的方法)

3:父類引用指向字類對象www.多態(tài):實現(xiàn)多態(tài)三個條件:安博思軟www.JAVA中,一個類之能有一個父類,不能多繼承。一個父類可以有多個子類,而在子類里可以重寫父類的方法,這樣每個子類里重寫的代碼不一樣,自然表現(xiàn)形式就不一樣。這樣用父類的變量去引用不同的子類,在調(diào)用這個相同的方法的時候得到的結(jié)果和表現(xiàn)形式就不一樣了,這就是多態(tài),相同的消息(也就是調(diào)用相同的方法)會有不同的結(jié)果多態(tài)的實現(xiàn):通過繼承實現(xiàn)www.//子類2

publicclassSon2extendsFather{//重寫父類打孩子方法

publicvoidhitChild(){System.out.println("我知道錯了,別打了!");

}}//子類3publicclassSon3extendsFather{//重寫父類打孩子方法publicvoidhitChild(){System.out.println("我跑,你打不著!");}}//子類1publicclassSon1extendsFather{//重寫父類打孩子方法publicvoidhitChild(){System.out.println("我知道錯了,別打了!");}}//父類publicclassFather{//父類有一個打孩子方法

publicvoidhitChild(){}System.out.println(“我是父親,可以打兒子!");}//測試類

publicclassTest{

publicstaticvoidmain(Stringargs〔〕){ Fatherfather; father=newSon1(); father.hitChild(); father=newSon2(); father.hitChild(); father=newSon3(); father.hitChild();}}輸出結(jié)果:我知道錯了,別打了!為什么打我?我做錯什么了!我跑,你打不著!都調(diào)用了相同的方法,出現(xiàn)了不同的結(jié)果!這就是多態(tài)的表現(xiàn)!

www.繼承單繼承一個類只能繼承一個父類!接口多實現(xiàn)一個類可以同時實現(xiàn)多個接口!一個接口類型變量也可以指向其實現(xiàn)類的實例,這也是多態(tài)的一種表現(xiàn)。多態(tài)的實現(xiàn):通過接口實現(xiàn)www.//類2publicclassdaughter2implementsPetInterFace{//實現(xiàn)接口方法publicvoidpet(){

System.out.println(“父親寵愛我!");}}

//測試類publicstaticvoidmain(String[]args){

PetInterFacedg1=newdaughter1();dg1.Pet();

PetInterFacedg2=newdaughter2();dg2.Pet();

}

}//類1publicclassdaughter1implementsPetInterFace{//實現(xiàn)接口方法publicvoidpet(){System.out.println(“父親溺愛我!");}}//新接口publicinterfacePetInterFace{

//新功能方法publicvoidpet();}輸出結(jié)果:父親溺愛我!

父親寵愛我!1).應(yīng)用程序不必為每一個派生類(子類

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論