




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
抽象類與接口抽象類與接口1抽象方法和抽象類在類中沒(méi)有方法體的方法,就是抽象方法。含有抽象方法的類,即為抽象類。如果一個(gè)子類沒(méi)有實(shí)現(xiàn)抽象基類中所有的抽象方法,則子類也成為一個(gè)抽象類。抽象類中可以沒(méi)有抽象方法,但是有抽象方法的類必須是抽象類。構(gòu)造方法、靜態(tài)方法、私有方法、final方法不能被聲明為抽象的方法。抽象方法和抽象類在類中沒(méi)有方法體的方法,就是抽象方法。2接口接口的概念是建立在封裝的基礎(chǔ)之上。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,封裝是指對(duì)象的使用者通過(guò)預(yù)先定義的接口關(guān)聯(lián)到某一對(duì)象的服務(wù)和數(shù)據(jù)時(shí),無(wú)需知道這些服務(wù)是如何實(shí)現(xiàn)的。因此接口在面向?qū)ο蟪绦蛟O(shè)計(jì)中有著重要的地位。
在Java中,抽象類和接口(Interface)都是一種接口抽象機(jī)制,符合接口的特點(diǎn)。習(xí)慣上我們只把Java語(yǔ)法中的接口(Interface)作為接口的窄定義。該接口是一種類型,它定義了能被一個(gè)類實(shí)現(xiàn)的方法。接口接口的概念是建立在封裝的基礎(chǔ)之上。在面向?qū)ο蟪绦蛟O(shè)計(jì)中3接口的概念 接口是指一些方法特征的集合,它關(guān)心的是方法的特征定義(例如方法的名稱、參數(shù)的類型及數(shù)量),而不是方法的具體實(shí)現(xiàn)。在Java中,抽象類和接口都是一種接口抽象機(jī)制,符合接口的特點(diǎn)。接口提供了一種抽象機(jī)制
接口使即插即用變得可能
接口針對(duì)抽象而不是針對(duì)實(shí)現(xiàn)
接口的概念 接口是指一些方法特征的集合,它關(guān)心的是方法的特4Java接口定義接口實(shí)現(xiàn)接口接口與多重繼承
[public]interface接口名[extends祖先接口名]{返回類型方法名(參數(shù)列表);...類型常量字段名=值;...}[public]class類名[extends祖先類名]implements接口名[,其它接口名...]{//類的實(shí)現(xiàn)代碼...}
下面代碼通過(guò)實(shí)現(xiàn)Writeable接口和Eatable接口的Paper類代碼,演示了多重繼承的程序設(shè)計(jì):publicclassPaperimplementsEatable,Writeable{publicvoideat(){System.out.println("撕紙吃,"+TASTELESS);}publicvoidwrite(){System.out.println("在紙上書寫:");}}Java接口定義接口[public]interface5接口應(yīng)用實(shí)例使用接口的好處是便于系統(tǒng)的擴(kuò)展、維護(hù)和重用。接口的使用使得代碼模塊之間的耦合減弱。具體表現(xiàn)在對(duì)象之間的依賴關(guān)系弱化為客戶——服務(wù)的關(guān)系,即客戶對(duì)象請(qǐng)求服務(wù),服務(wù)對(duì)象提供服務(wù),而接口則成了提供服務(wù)的一種契約。沒(méi)有經(jīng)驗(yàn)的程序員設(shè)計(jì)接口時(shí)通常會(huì)犯合并接口和預(yù)留接口這兩個(gè)錯(cuò)誤。根據(jù)接口隔離法則,我們?cè)谠O(shè)計(jì)接口時(shí)不應(yīng)該強(qiáng)迫客戶端依賴于他們用不上的方法,而是應(yīng)該提供職責(zé)明確、功能專一的最小化接口。除非必要,應(yīng)該嚴(yán)格控制接口寬度,避免接口冗余。接口應(yīng)用實(shí)例使用接口的好處是便于系統(tǒng)的擴(kuò)展、維護(hù)和重用。接6接口接口中所有的方法都是publicabstract。在接口中聲明方法時(shí),不能使用native、static、final、synchronized、private、protected等修飾符。和public類一樣,public接口也必須定義在與接口同名的文件中。接口接口中所有的方法都是publicabstract。7接口接口中可以有數(shù)據(jù)成員,這些成員默認(rèn)都是publicstaticfinal。接口接口中可以有數(shù)據(jù)成員,這些成員默認(rèn)都是publicst8Math.javainterfaceMath{ doublePI=3.1415926; }classArithmeticimplementsMath{ doubleroundArea(doubleradius) { returnPI*radius*radius; }}classStudent{ publicstaticvoidmain(String[]args) { Arithmetica=newArithmetic(); System.out.println(a.roundArea(3)); System.out.println(Math.PI); //ok System.out.println(Arithmetic.PI); //ok System.out.println(a.PI); //ok }}Math.java9接口一個(gè)接口可以繼承自另一個(gè)接口。Java中不允許類的多繼承,但允許接口的多繼承。接口一個(gè)接口可以繼承自另一個(gè)接口。10Sofa.javainterfaceSittable{ voidsit();}interfaceLie{ voidsleep();}interfaceChairextendsSittable{}interfaceSofaextendsSittable,Lie{}Sofa.java11接口在Java中,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。一個(gè)類在繼承另外一個(gè)類的同時(shí),可以實(shí)現(xiàn)多個(gè)接口。接口在Java中,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。12Sofa.java//實(shí)現(xiàn)多個(gè)接口interfaceSittable{ voidsit();}interfaceLie{ voidsleep();}classSofaimplementsSittable,Lie{ publicvoidsit() { } publicvoidsleep() { }}Sofa.java13Sofa.java//在繼承類的同時(shí),實(shí)現(xiàn)多個(gè)接口interfaceSittable{ voidsit();}interfaceLie{ voidsleep();}interfaceHealthCare{ voidmassage();}classChairimplementsSittable{ publicvoidsit(){};}classSofaextendsChairimplementsLie,HealthCare{ publicvoidsleep(){}; publicvoidmassage(){};}Sofa.java14多態(tài)的概念多態(tài)是指在一棵繼承樹(shù)中的類可以有多個(gè)同名但不同方法體以及不同形參的方法。兩種情況:覆蓋:在子類中直接定義和父類同樣的屬性和方法,但重新編寫了方法體,即子類與父類方法的形參與返回值都相同,而內(nèi)部處理不同,這種方法在使用過(guò)程中,Java虛擬機(jī)會(huì)根據(jù)調(diào)用這個(gè)方法的類來(lái)確定哪個(gè)方法被調(diào)用重載:同一個(gè)類定義中有多個(gè)同名的方法,但有不同的形參,而且每個(gè)方法有不同的方法體,調(diào)用時(shí)根據(jù)形參的個(gè)數(shù)和類型來(lái)決定調(diào)用的是哪個(gè)方法注:不能根據(jù)返回值的類型來(lái)區(qū)分重載的方法多態(tài)的概念多態(tài)是指在一棵繼承樹(shù)中的類可以有多個(gè)同名但15方法的覆蓋與重載的區(qū)別方法的覆蓋是子類和父類之間的關(guān)系,而重載是同一類內(nèi)部多個(gè)方法間的關(guān)系方法的覆蓋一般是兩個(gè)方法間的,而重載時(shí)可能有多個(gè)重載方法覆蓋的方法有相同的方法名和形參表,而重載的方法只能有相同的方法名,不能有相同的形參表覆蓋時(shí)區(qū)分方法的是根據(jù)調(diào)用他的對(duì)象,而重載是根據(jù)形參來(lái)決定調(diào)用的是哪個(gè)方法用final修飾的方法是不能被子類覆蓋的,只能被重載方法的覆蓋與重載的區(qū)別方法的覆蓋是子類和父類之間的關(guān)系,而重16public
Class
Parents
{
public
void
print()
{
System.out.println(“parents”);
}}public
Class
Father
extends
Parents
{
public
void
print()
{ System.out.println(“father”); }}public
Class
Mother
extends
Parents
{
public
void
print()
{
System.out.println(“mother”);
}}public
Class
Test
{
public
void
find(Parents
p)
{
p.print(); }public
static
void
main(String[]
args)
{
Test
t
=
new
Test();
Father
f
=
new
Father();
Mother
m
=
new
Mother();
t.find(f);
t.find(m);
}}
public
Class
Parents
{
publi17最后的輸出結(jié)果分別是father和mother,將派生類的引用傳給基類的引用,然后調(diào)用重寫方法,基類的引用之所以能夠找到應(yīng)該調(diào)用那個(gè)派生類的方法,就是因?yàn)槌绦蛟谶\(yùn)行時(shí)進(jìn)行了綁定。
在Java中,談?wù)摱鄳B(tài)就是在討論方法調(diào)用的綁定,綁定就是將一個(gè)方法調(diào)用同一個(gè)方法主體關(guān)聯(lián)起來(lái)。在C語(yǔ)言中,方法(在C中稱為函數(shù))的綁定是由編譯器來(lái)實(shí)現(xiàn)的,在英文中稱為early
binding(前期綁定),因此,大家自然就會(huì)想到相對(duì)應(yīng)的late
binding(后期綁定),這在Java中通常叫做run-time
binding(運(yùn)行時(shí)綁定),運(yùn)行時(shí)綁定的目的就是在代碼運(yùn)行的時(shí)候能夠判斷對(duì)象的類型。多態(tài)的作用就是用來(lái)將接口和實(shí)現(xiàn)分離開(kāi),改善代碼的組織結(jié)構(gòu),增強(qiáng)代碼的可讀性。
最后的輸出結(jié)果分別是father和mother,18多態(tài)的一個(gè)小結(jié):Java中除了static和final方法外,其他所有的方法都是運(yùn)行時(shí)綁定的。private方法都被隱式指定為final的,因此final的方法不會(huì)在運(yùn)行時(shí)綁定。當(dāng)在派生類中重寫基類中static、final、或private方法時(shí),實(shí)質(zhì)上是創(chuàng)建了一個(gè)新的方法。
在派生類中,對(duì)于基類中的private方法,最好采用不同的名字。
包含抽象方法的類叫做抽象類。注意定義里面包含這樣的意思,只要類中包含一個(gè)抽象方法,該類就是抽象類。抽象類在派生中就是作為基類的角色,為不同的子類提供通用的接口。
對(duì)象清理的順序和創(chuàng)建的順序相反,當(dāng)然前提是自己想手動(dòng)清理對(duì)象,因?yàn)榇蠹叶贾繨ava垃圾回收器。
在基類的構(gòu)造方法中小心調(diào)用基類中被重寫的方法,這里涉及到對(duì)象初始化順序。
構(gòu)造方法是被隱式聲明為static方法。
用繼承表達(dá)行為間的差異,用字段表達(dá)狀態(tài)上的變化。
多態(tài)的一個(gè)小結(jié):19classSuper{ staticStringgreeting(){ return"Goodnight"; } Stringname(){ return"Richard"; }}classSubextendsSuper{ staticStringgreeting(){ return"Hello"; } Stringname(){ return"Dick"; }}classTest{ public
static
voidmain(String[]args){ Supers=newSub(); System.out.println(s.greeting()+","+()); }}classSuper{classTest{20運(yùn)行Test類的結(jié)果如下Goodnight,Dick試圖用子類的靜態(tài)方法隱藏父類中同樣標(biāo)識(shí)的實(shí)例方法是不合法的編譯器將會(huì)報(bào)錯(cuò)試圖用子類的實(shí)例方法覆蓋父類中同樣標(biāo)識(shí)的靜態(tài)方法也是不合法的編譯器同樣會(huì)報(bào)錯(cuò)靜態(tài)方法和最終方法帶關(guān)鍵字final的方法不能被覆蓋實(shí)例方法能夠被覆蓋抽象方法必須在具體類中被覆蓋運(yùn)行Test類的結(jié)果如下21常量的定義使用關(guān)鍵字final定義常量,例如:finaldoublePI=3.1415926;作為一種約定,在定義常量時(shí),通常采用大寫形式。final常量可以在聲明的同時(shí)賦初值,也可以在構(gòu)造函數(shù)中賦初值。為了節(jié)省內(nèi)存,我們通常將常量聲明為靜態(tài)的(static)。常量的定義使用關(guān)鍵字final定義常量,例如:22當(dāng)子類中的變量名與父類的相同,原來(lái)的變量被遮蓋。方法的覆蓋(overriding)和重載(overloading)。子孫類中定義的方法和祖先類中某個(gè)方法同名、同參數(shù)行,則祖先類中的該方法被覆蓋;方法的重載是指一個(gè)對(duì)象的多態(tài)性,即多個(gè)方法用相同的名稱,但參數(shù)行不同。
JAVA開(kāi)發(fā)與應(yīng)用抽象類與接口及多態(tài)1課件23final在方法之前,防止該方法被覆蓋;final在類之前,標(biāo)是該類不能被繼承;
final在變量之前,定義一個(gè)常量。
JAVA開(kāi)發(fā)與應(yīng)用抽象類與接口及多態(tài)1課件24特殊變量thisthis變量代表對(duì)象本身當(dāng)類中有兩個(gè)同名變量,一個(gè)屬于類(類的成員變量),而另一個(gè)屬于某個(gè)特定的方法(方法中的局部變量),使用this區(qū)分成員變量和局部變量。使用this簡(jiǎn)化構(gòu)造函數(shù)的調(diào)用。特殊變量thisthis變量代表對(duì)象本身25特殊變量this關(guān)于實(shí)例方法和實(shí)例數(shù)據(jù)成員的進(jìn)一步說(shuō)明
一個(gè)類所有的實(shí)例(對(duì)象)調(diào)用的成員方法在內(nèi)存中只有一份拷貝,盡管在內(nèi)存中可能有多個(gè)對(duì)象,而數(shù)據(jù)成員在類的每個(gè)對(duì)象所在內(nèi)存中都存在著一份拷貝。this變量允許相同的實(shí)例方法為不同的對(duì)象工作。每當(dāng)調(diào)用一個(gè)實(shí)例方法時(shí),this變量將被設(shè)置成引用該實(shí)例方法的特定的類對(duì)象。方法的代碼接著會(huì)與this所代表的對(duì)象的特定數(shù)據(jù)建立關(guān)聯(lián)。特殊變量this關(guān)于實(shí)例方法和實(shí)例數(shù)據(jù)成員的進(jìn)一步說(shuō)明26特殊變量super特殊變量super,提供了對(duì)父類的訪問(wèn)。可以使用super訪問(wèn)父類被子類隱藏的變量或覆蓋的方法。每個(gè)子類構(gòu)造方法的第一條語(yǔ)句,都是隱含地調(diào)用super(),如果父類沒(méi)有這種形式的構(gòu)造函數(shù),那么在編譯的時(shí)候就會(huì)報(bào)錯(cuò)。特殊變量super特殊變量super,提供了對(duì)父類的訪問(wèn)。27抽象類與接口抽象類與接口28抽象方法和抽象類在類中沒(méi)有方法體的方法,就是抽象方法。含有抽象方法的類,即為抽象類。如果一個(gè)子類沒(méi)有實(shí)現(xiàn)抽象基類中所有的抽象方法,則子類也成為一個(gè)抽象類。抽象類中可以沒(méi)有抽象方法,但是有抽象方法的類必須是抽象類。構(gòu)造方法、靜態(tài)方法、私有方法、final方法不能被聲明為抽象的方法。抽象方法和抽象類在類中沒(méi)有方法體的方法,就是抽象方法。29接口接口的概念是建立在封裝的基礎(chǔ)之上。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,封裝是指對(duì)象的使用者通過(guò)預(yù)先定義的接口關(guān)聯(lián)到某一對(duì)象的服務(wù)和數(shù)據(jù)時(shí),無(wú)需知道這些服務(wù)是如何實(shí)現(xiàn)的。因此接口在面向?qū)ο蟪绦蛟O(shè)計(jì)中有著重要的地位。
在Java中,抽象類和接口(Interface)都是一種接口抽象機(jī)制,符合接口的特點(diǎn)。習(xí)慣上我們只把Java語(yǔ)法中的接口(Interface)作為接口的窄定義。該接口是一種類型,它定義了能被一個(gè)類實(shí)現(xiàn)的方法。接口接口的概念是建立在封裝的基礎(chǔ)之上。在面向?qū)ο蟪绦蛟O(shè)計(jì)中30接口的概念 接口是指一些方法特征的集合,它關(guān)心的是方法的特征定義(例如方法的名稱、參數(shù)的類型及數(shù)量),而不是方法的具體實(shí)現(xiàn)。在Java中,抽象類和接口都是一種接口抽象機(jī)制,符合接口的特點(diǎn)。接口提供了一種抽象機(jī)制
接口使即插即用變得可能
接口針對(duì)抽象而不是針對(duì)實(shí)現(xiàn)
接口的概念 接口是指一些方法特征的集合,它關(guān)心的是方法的特31Java接口定義接口實(shí)現(xiàn)接口接口與多重繼承
[public]interface接口名[extends祖先接口名]{返回類型方法名(參數(shù)列表);...類型常量字段名=值;...}[public]class類名[extends祖先類名]implements接口名[,其它接口名...]{//類的實(shí)現(xiàn)代碼...}
下面代碼通過(guò)實(shí)現(xiàn)Writeable接口和Eatable接口的Paper類代碼,演示了多重繼承的程序設(shè)計(jì):publicclassPaperimplementsEatable,Writeable{publicvoideat(){System.out.println("撕紙吃,"+TASTELESS);}publicvoidwrite(){System.out.println("在紙上書寫:");}}Java接口定義接口[public]interface32接口應(yīng)用實(shí)例使用接口的好處是便于系統(tǒng)的擴(kuò)展、維護(hù)和重用。接口的使用使得代碼模塊之間的耦合減弱。具體表現(xiàn)在對(duì)象之間的依賴關(guān)系弱化為客戶——服務(wù)的關(guān)系,即客戶對(duì)象請(qǐng)求服務(wù),服務(wù)對(duì)象提供服務(wù),而接口則成了提供服務(wù)的一種契約。沒(méi)有經(jīng)驗(yàn)的程序員設(shè)計(jì)接口時(shí)通常會(huì)犯合并接口和預(yù)留接口這兩個(gè)錯(cuò)誤。根據(jù)接口隔離法則,我們?cè)谠O(shè)計(jì)接口時(shí)不應(yīng)該強(qiáng)迫客戶端依賴于他們用不上的方法,而是應(yīng)該提供職責(zé)明確、功能專一的最小化接口。除非必要,應(yīng)該嚴(yán)格控制接口寬度,避免接口冗余。接口應(yīng)用實(shí)例使用接口的好處是便于系統(tǒng)的擴(kuò)展、維護(hù)和重用。接33接口接口中所有的方法都是publicabstract。在接口中聲明方法時(shí),不能使用native、static、final、synchronized、private、protected等修飾符。和public類一樣,public接口也必須定義在與接口同名的文件中。接口接口中所有的方法都是publicabstract。34接口接口中可以有數(shù)據(jù)成員,這些成員默認(rèn)都是publicstaticfinal。接口接口中可以有數(shù)據(jù)成員,這些成員默認(rèn)都是publicst35Math.javainterfaceMath{ doublePI=3.1415926; }classArithmeticimplementsMath{ doubleroundArea(doubleradius) { returnPI*radius*radius; }}classStudent{ publicstaticvoidmain(String[]args) { Arithmetica=newArithmetic(); System.out.println(a.roundArea(3)); System.out.println(Math.PI); //ok System.out.println(Arithmetic.PI); //ok System.out.println(a.PI); //ok }}Math.java36接口一個(gè)接口可以繼承自另一個(gè)接口。Java中不允許類的多繼承,但允許接口的多繼承。接口一個(gè)接口可以繼承自另一個(gè)接口。37Sofa.javainterfaceSittable{ voidsit();}interfaceLie{ voidsleep();}interfaceChairextendsSittable{}interfaceSofaextendsSittable,Lie{}Sofa.java38接口在Java中,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。一個(gè)類在繼承另外一個(gè)類的同時(shí),可以實(shí)現(xiàn)多個(gè)接口。接口在Java中,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。39Sofa.java//實(shí)現(xiàn)多個(gè)接口interfaceSittable{ voidsit();}interfaceLie{ voidsleep();}classSofaimplementsSittable,Lie{ publicvoidsit() { } publicvoidsleep() { }}Sofa.java40Sofa.java//在繼承類的同時(shí),實(shí)現(xiàn)多個(gè)接口interfaceSittable{ voidsit();}interfaceLie{ voidsleep();}interfaceHealthCare{ voidmassage();}classChairimplementsSittable{ publicvoidsit(){};}classSofaextendsChairimplementsLie,HealthCare{ publicvoidsleep(){}; publicvoidmassage(){};}Sofa.java41多態(tài)的概念多態(tài)是指在一棵繼承樹(shù)中的類可以有多個(gè)同名但不同方法體以及不同形參的方法。兩種情況:覆蓋:在子類中直接定義和父類同樣的屬性和方法,但重新編寫了方法體,即子類與父類方法的形參與返回值都相同,而內(nèi)部處理不同,這種方法在使用過(guò)程中,Java虛擬機(jī)會(huì)根據(jù)調(diào)用這個(gè)方法的類來(lái)確定哪個(gè)方法被調(diào)用重載:同一個(gè)類定義中有多個(gè)同名的方法,但有不同的形參,而且每個(gè)方法有不同的方法體,調(diào)用時(shí)根據(jù)形參的個(gè)數(shù)和類型來(lái)決定調(diào)用的是哪個(gè)方法注:不能根據(jù)返回值的類型來(lái)區(qū)分重載的方法多態(tài)的概念多態(tài)是指在一棵繼承樹(shù)中的類可以有多個(gè)同名但42方法的覆蓋與重載的區(qū)別方法的覆蓋是子類和父類之間的關(guān)系,而重載是同一類內(nèi)部多個(gè)方法間的關(guān)系方法的覆蓋一般是兩個(gè)方法間的,而重載時(shí)可能有多個(gè)重載方法覆蓋的方法有相同的方法名和形參表,而重載的方法只能有相同的方法名,不能有相同的形參表覆蓋時(shí)區(qū)分方法的是根據(jù)調(diào)用他的對(duì)象,而重載是根據(jù)形參來(lái)決定調(diào)用的是哪個(gè)方法用final修飾的方法是不能被子類覆蓋的,只能被重載方法的覆蓋與重載的區(qū)別方法的覆蓋是子類和父類之間的關(guān)系,而重43public
Class
Parents
{
public
void
print()
{
System.out.println(“parents”);
}}public
Class
Father
extends
Parents
{
public
void
print()
{ System.out.println(“father”); }}public
Class
Mother
extends
Parents
{
public
void
print()
{
System.out.println(“mother”);
}}public
Class
Test
{
public
void
find(Parents
p)
{
p.print(); }public
static
void
main(String[]
args)
{
Test
t
=
new
Test();
Father
f
=
new
Father();
Mother
m
=
new
Mother();
t.find(f);
t.find(m);
}}
public
Class
Parents
{
publi44最后的輸出結(jié)果分別是father和mother,將派生類的引用傳給基類的引用,然后調(diào)用重寫方法,基類的引用之所以能夠找到應(yīng)該調(diào)用那個(gè)派生類的方法,就是因?yàn)槌绦蛟谶\(yùn)行時(shí)進(jìn)行了綁定。
在Java中,談?wù)摱鄳B(tài)就是在討論方法調(diào)用的綁定,綁定就是將一個(gè)方法調(diào)用同一個(gè)方法主體關(guān)聯(lián)起來(lái)。在C語(yǔ)言中,方法(在C中稱為函數(shù))的綁定是由編譯器來(lái)實(shí)現(xiàn)的,在英文中稱為early
binding(前期綁定),因此,大家自然就會(huì)想到相對(duì)應(yīng)的late
binding(后期綁定),這在Java中通常叫做run-time
binding(運(yùn)行時(shí)綁定),運(yùn)行時(shí)綁定的目的就是在代碼運(yùn)行的時(shí)候能夠判斷對(duì)象的類型。多態(tài)的作用就是用來(lái)將接口和實(shí)現(xiàn)分離開(kāi),改善代碼的組織結(jié)構(gòu),增強(qiáng)代碼的可讀性。
最后的輸出結(jié)果分別是father和mother,45多態(tài)的一個(gè)小結(jié):Java中除了static和final方法外,其他所有的方法都是運(yùn)行時(shí)綁定的。private方法都被隱式指定為final的,因此final的方法不會(huì)在運(yùn)行時(shí)綁定。當(dāng)在派生類中重寫基類中static、final、或private方法時(shí),實(shí)質(zhì)上是創(chuàng)建了一個(gè)新的方法。
在派生類中,對(duì)于基類中的private方法,最好采用不同的名字。
包含抽象方法的類叫做抽象類。注意定義里面包含這樣的意思,只要類中包含一個(gè)抽象方法,該類就是抽象類。抽象類在派生中就是作為基類的角色,為不同的子類提供通用的接口。
對(duì)象清理的順序和創(chuàng)建的順序相反,當(dāng)然前提是自己想手動(dòng)清理對(duì)象,因?yàn)榇蠹叶贾繨ava垃圾回收器。
在基類的構(gòu)造方法中小心調(diào)用基類中被重寫的方法,這里涉及到對(duì)象初始化順序。
構(gòu)造方法是被隱式聲明為static方法。
用繼承表達(dá)行為間的差異,用字段表達(dá)狀態(tài)上的變化。
多態(tài)的一個(gè)小結(jié):46classSuper{ staticStringgreeting(){ return"Goodnight"; } Stringname(){ return"Richard"; }}classSubextendsSuper{ staticStringgreeting(){ return"Hello"; } Stringname(){ return"Dick"; }}classTest{ public
static
voidmain(String[]
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 社區(qū)養(yǎng)老服務(wù)項(xiàng)目運(yùn)營(yíng)可行性研究報(bào)告(模板范文)
- 農(nóng)田基礎(chǔ)設(shè)施優(yōu)化提升項(xiàng)目可行性研究報(bào)告(模板)
- 救生員應(yīng)急處理能力的試題及答案
- 模具設(shè)計(jì)師資格認(rèn)證考試成功之道的試題及答案
- 2024年體育經(jīng)紀(jì)人考試綜合提升試題及答案
- 植保員在危機(jī)處理中扮演的角色試題及答案
- 辦公樓局部裝修工程可行性研究報(bào)告(參考)
- 2024年農(nóng)業(yè)植保員考試中的跨學(xué)科知識(shí)應(yīng)用與實(shí)踐結(jié)合試題及答案
- 植保員應(yīng)對(duì)突發(fā)事件的能力提升試題及答案
- 模具材料與工藝知識(shí)試題及答案
- 建筑外窗抗風(fēng)壓性能計(jì)算書
- 年產(chǎn)萬(wàn)噸酒精發(fā)酵車間設(shè)計(jì)
- 生物化學(xué)與分子生物學(xué)人衛(wèi)版教材全集
- 照片里的故事
- 土木工程畢業(yè)設(shè)計(jì)框架結(jié)構(gòu)教學(xué)樓計(jì)算書
- 整理【越南】環(huán)境保護(hù)法
- 河北工業(yè)大學(xué)碩士生指導(dǎo)教師(含新申請(qǐng)者)簡(jiǎn)況表.
- TAIYE370-DTH-IV液壓鉆機(jī)操作維護(hù)說(shuō)明書
- 吉林大學(xué)第一臨床醫(yī)學(xué)院進(jìn)修人員申請(qǐng)表
- 吉爾吉斯斯坦共和國(guó)公司法
- 進(jìn)制轉(zhuǎn)換(課堂PPT)
評(píng)論
0/150
提交評(píng)論