資源描述:
《類的繼承與接口》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、類的繼承和接口1、類的繼承2、接口3、內(nèi)部類4、匿名類主要知識(shí)點(diǎn):類的繼承類的繼承和接口通過繼承可以從已經(jīng)存在的類擴(kuò)展類的功能,繼承的類具有被繼承類的功能和屬性。一個(gè)類通過關(guān)鍵字extends繼承(擴(kuò)展)另一個(gè)類。被繼承的類稱為父類或超類,繼承的類稱為子類。子類可以繼承父類所有的非私有成員(變量和方法)作為自己的成員。除了繼承的成員,子類也可以創(chuàng)建自己的成員。子類只能繼承父類的非私有成員,私有成員不能繼承。當(dāng)子類實(shí)例化時(shí)子類和父類的構(gòu)造方法都被調(diào)用。程序smp38.java說明類的繼承classsmp381{inta=1;privateintb=1000;publicdoublec=10;vo
2、idff(longx,longy){longz;z=x*y;System.out.println("b="+b);System.out.println("z="+z);}}classsmp382extendssmp381{floatd=100.0f;}publicclasssmp38{publicstaticvoidmain(Stringargs[]){smp382abc=newsmp382();System.out.println("a="+abc.a);System.out.println("c="+abc.c);System.out.println("d="+abc.d);abc.ff(
3、88L,100L);}}程序smp38.java的分析和運(yùn)行類smp381中定義了三個(gè)成員變量a、b、c和一個(gè)方法ff。類smp382繼承了類smp381,是smp381的子類。所以類smp382擁有類smp381除變量b以外的其他全部非私有成員。類smp382中的語句1又定義一個(gè)自己的變量d,所以該類共有a、c、d三個(gè)成員變量和一個(gè)ff方法。語句2在類smp38中創(chuàng)建了類smp382的對(duì)象abc。語句3~6通過這個(gè)對(duì)象訪問類smp382的成員變量a、c、d和方法ff。程序的編譯和運(yùn)行結(jié)果如下圖所示。覆蓋如果子類中定義的某個(gè)成員方法與父類某個(gè)方法的名稱、返回類型和參數(shù)完全相同,則稱覆蓋或重寫了
4、父類的這一方法。如果子類中定義的某個(gè)成員變量與父類某個(gè)變量的名稱、數(shù)據(jù)類型完全相同,則稱覆蓋或重寫了父類的這個(gè)變量。如果父類的某個(gè)成員被覆蓋,該成員便被隱藏,當(dāng)子類的對(duì)象訪問這個(gè)成員時(shí),將調(diào)用子類定義的成員。通過關(guān)鍵字super可在子類中訪問被隱藏的父類成員。super代表對(duì)父類對(duì)象的引用。覆蓋是指父類與子類間的同名變量和方法,重載是指同一個(gè)類的同名方法。。程序smp39.java給出了覆蓋和super應(yīng)用的例子classsmp391{Stringname="玲玲";intage=18;}classsmp392extendssmp391{Stringname="張三";intage=60;vo
5、idff(){age=super.age;System.out.println("姓名:"+name);System.out.println("年齡:"+age);}}publicclasssmp39{publicstaticvoidmain(Stringargs[]){smp392abc=newsmp392();abc.ff();}}程序smp39.java的分析和運(yùn)行程序中子類的name和age變量覆蓋了父類的相應(yīng)變量。由于通過關(guān)鍵字super訪問變量age,所以顯示的是父類age變量。由于沒有通過關(guān)鍵字super訪問變量name,所以父類的變量被隱藏了,顯示的是子類name變量。結(jié)果張三
6、18歲,如下圖所示。關(guān)鍵字this和super都只能在非靜態(tài)方法中使用,不能在靜態(tài)方法中使用。多態(tài)性多態(tài)性是面向?qū)ο蟮某绦蛟O(shè)計(jì)方法中最強(qiáng)大的一種機(jī)制。Java中的多態(tài)性是一種運(yùn)行時(shí)多態(tài),它包括:子類對(duì)象替代父類對(duì)象技術(shù)覆蓋(OverRide)技術(shù)重載(OverLoad)技術(shù)抽象方法(abstract)技術(shù)根據(jù)需要調(diào)用不同類層的同名方法稱為多態(tài)性。例如在子類中覆蓋父類中的方法,可產(chǎn)生不同類層之間的多態(tài)性。方法重載通過不同參量加以區(qū)別,產(chǎn)生同一個(gè)類的多態(tài)性。關(guān)鍵字finalfinal是終點(diǎn),用關(guān)鍵字final聲明的類稱為final類。例如:finalclassA被聲明為final的類不能被繼承,沒
7、有子類。用final聲明的方法為final方法,final方法只能使用,不能重載。也可將變量或常量聲明為final。被聲明為final的變量,必須在聲明時(shí)初始化(賦值)。final的變量或常量都只能讀取不能修改。將變量、常量或方法聲明為final,可以對(duì)它們進(jìn)行保護(hù),保證在使用時(shí)不會(huì)改變。例如將變量xyz設(shè)置為:publicstaticfinalintxyz=100;既能對(duì)它進(jìn)行訪問,又能有效地保