接口繼承和多態(tài)_第1頁(yè)
接口繼承和多態(tài)_第2頁(yè)
接口繼承和多態(tài)_第3頁(yè)
接口繼承和多態(tài)_第4頁(yè)
接口繼承和多態(tài)_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第8章接口、繼承和多態(tài)8.1接口的使用8.2類(lèi)的繼承8.3多態(tài)8.4Object類(lèi)8.5對(duì)象類(lèi)型的轉(zhuǎn)換8.6instanceof判斷對(duì)象類(lèi)型主要內(nèi)容8.2類(lèi)的繼承8.2.1繼承的實(shí)現(xiàn)8.2.2繼承中的重寫(xiě)8.2.3使用super關(guān)鍵字8.2.1繼承的實(shí)現(xiàn)繼承是指一個(gè)類(lèi)的定義可以基于另外一個(gè)已經(jīng)存在的類(lèi),即子類(lèi)基于父類(lèi),從而實(shí)現(xiàn)父類(lèi)代碼的重用。Java中只允許每個(gè)子類(lèi)擁有一個(gè)直接父類(lèi),即單繼承。在Java語(yǔ)言中,繼承通過(guò)關(guān)鍵字extends來(lái)實(shí)現(xiàn)。即在子類(lèi)的聲明中,通過(guò)使用關(guān)鍵字extends來(lái)顯式的指明其父類(lèi)。8.2.1繼承的實(shí)現(xiàn)其基本的語(yǔ)法格式如下:[修飾符]class子類(lèi)名extends父類(lèi)名{類(lèi)體}public

classHusband{

protectedStringname;

protected

intage;

protectedStringsex;privateWifewife;}public

classWife{

protectedStringname;

protected

intage;

protectedStringsex;privateHusbandhusband;}public

classPerson{

protectedStringname;

protected

intage;

protectedStringsex;}public

classHusband{privateWifewife;}public

classWife{privateHusbandhusband;}子類(lèi)可以繼承父類(lèi)的所有非私有成員變量和成員方法。8.2.1繼承的實(shí)現(xiàn)【例8-3】創(chuàng)建Bird類(lèi),定義一個(gè)成員變量描述顏色。創(chuàng)建Pigeon類(lèi),它繼承了Bird類(lèi)。在構(gòu)造方法中,對(duì)繼承的color變量賦值。publicclassBird{Stringcolor;}publicclassPigeonextendsBird{publicPigeon(){color="White";}}8.2.1繼承的實(shí)現(xiàn)成員的繼承子類(lèi)可以自行聲明新的成員變量子類(lèi)可以聲明新的成員方法子類(lèi)可以聲明與父類(lèi)具有相同簽名的成員方法,即方法的重寫(xiě)。子類(lèi)可以聲明與父類(lèi)中同名方法的重載方法。8.2.2繼承中的重寫(xiě)重寫(xiě)是指父子類(lèi)之間的關(guān)系,當(dāng)子類(lèi)繼承父類(lèi)中所有可能被子類(lèi)訪問(wèn)的成員方法時(shí),如果子類(lèi)的方法名與父類(lèi)的方法名相同,那么子類(lèi)就不能繼承父類(lèi)的方法,此時(shí),稱(chēng)為子類(lèi)的方法重寫(xiě)了父類(lèi)的方法。重寫(xiě)體現(xiàn)了子類(lèi)補(bǔ)充或者改變父類(lèi)方法的能力。通過(guò)重寫(xiě),可以使一個(gè)方法在不同的子類(lèi)中表現(xiàn)出不同的行為。classA{

publicvoidf(){

System.out.println("thisisfatherclass!");}}publicclassmyappextendsA{publicvoidf1(){//增加新的成員方法

System.out.println("thisissubclass!");}

publicstaticvoidmain(String[]args){

myappa=newmyapp();

a.f();

}}classA{

publicvoidf(){

System.out.println("thisisfatherclass!");}}publicclassmyappextendsA{publicvoidf(){//方法的重寫(xiě)

System.out.println("thisissubclass!");}

publicstaticvoidmain(String[]args){

myappa=newmyapp();

a.f();

}}classA{

publicvoidf(){

System.out.println("thisisfatherclass!");}}publicclassmyappextendsA{publicvoidf(String

str){//方法的重載

System.out.println("thisissubclass!"+str);}

publicstaticvoidmain(String[]args){

myappa=newmyapp();

a.f("abc");

}}8.2.3使用super關(guān)鍵字子類(lèi)可以繼承父類(lèi)的非私有成員變量和成員方法。但若子類(lèi)中聲明的成員變量與父類(lèi)的成員變量同名,則子類(lèi)的成員變量隱藏了父類(lèi)的成員變量。若子類(lèi)中聲明的成員方法與父類(lèi)的成員方法同名,并且方法的返回值類(lèi)型、參數(shù)個(gè)數(shù)和類(lèi)型也完全相同,則子類(lèi)的成員方法重寫(xiě)了父類(lèi)的成員方法。8.2.3使用super關(guān)鍵字若想在子類(lèi)中訪問(wèn)父類(lèi)中被隱藏的成員變量和被重寫(xiě)的成員方法,可以使用super關(guān)鍵字來(lái)操作。super關(guān)鍵字主要有以下兩種用途。1.調(diào)用父類(lèi)的構(gòu)造方法若要?jiǎng)?chuàng)建子類(lèi)對(duì)象時(shí)希望對(duì)從父類(lèi)繼承的成員變量初始化,需在子類(lèi)的構(gòu)造方法中利用super調(diào)用父類(lèi)的構(gòu)造方法。8.2.3使用super關(guān)鍵字1.調(diào)用父類(lèi)的構(gòu)造方法構(gòu)造格式:super([參數(shù)列表]);利用super調(diào)用父類(lèi)構(gòu)造方法的語(yǔ)句必須作為子類(lèi)構(gòu)造方法中的第一條語(yǔ)句。若第一條語(yǔ)句不是調(diào)用父類(lèi)構(gòu)造方法的語(yǔ)句,系統(tǒng)會(huì)自動(dòng)插入一條調(diào)用父類(lèi)默認(rèn)構(gòu)造方法的語(yǔ)句,如果父類(lèi)沒(méi)有不帶參數(shù)的構(gòu)造方法,則會(huì)出現(xiàn)編譯錯(cuò)誤。publicclassCircle{private

intr;publicCircle(){r=0;}publicCircle(intr1){r=r1;}publicint

getR(){returnr;}}publicclassCylinderextendsCircle{int

x,y;publicCylinder(){super();x=0;y=0;} publicCylinder(intr1,intx1,inty1){

super(r1);x=x1;y=y1;}publicstaticvoidmain(String[]args){Cylindercy=newCylinder();Cylindercy2=newCylinder(1,2,3);

System.out.println(cy);System.out.println(cy2);}半徑:0坐標(biāo):(0,0)半徑:1坐標(biāo):(2,3)publicStringtoString(){return"半徑:"+getR()+"坐標(biāo):("+x+","+y+")";}}8.2.3使用super關(guān)鍵字super關(guān)鍵字主要有以下兩種用途。2.操作被隱藏的成員變量和被重寫(xiě)的成員方法具體格式:super.成員變量名super.成員方法名([參數(shù)列表])classFather{publicStringv="Father";publicStringx="Father類(lèi)的成員變量x!!!";publicFather(){

System.out.println("Father構(gòu)造方法被調(diào)用!");}publicvoidoutinfo(){

System.out.println("Father的outinfo方法被調(diào)用");}}publicclassSonextendsFather{publicStringv="Son";publicSon(){super();System.out.println("Son構(gòu)造方法被調(diào)用!");}//覆蓋了超類(lèi)成員方法outinfo()publicvoidoutinfo(){

System.out.println("Son的outinfo()方法被調(diào)用");}public

voidtest(){Stringv="哈哈哈哈!";System.out.println("------1-----");System.out.println(v);System.out.println(this.v);System.out.println(super.v);System.out.println("------2-----");System.out.println(x);System.out.println(super.x);System.out.println("------3-----");outinfo();this.outinfo();super.outinfo();}public

static

void

main(String[]args){Sonson=newSon();son.test();}}8.3多態(tài)對(duì)于同一個(gè)消息,不同類(lèi)的對(duì)象可以作出不同的反應(yīng)被稱(chēng)為多態(tài)性。在Java中,通常使用方法的重載(Overloading)和重寫(xiě)(Overriding)實(shí)現(xiàn)類(lèi)的多態(tài)性。方法的重載是指在一個(gè)類(lèi)中,出現(xiàn)多個(gè)方法名相同,但參數(shù)個(gè)數(shù)或參數(shù)類(lèi)型不同的方法,則稱(chēng)為方法的重載。Java在執(zhí)行具有重載關(guān)系的方法時(shí),將根據(jù)調(diào)用參數(shù)的個(gè)數(shù)和類(lèi)型區(qū)分具體執(zhí)行的是哪個(gè)方法。8.3多態(tài)【例8-5】在項(xiàng)目中創(chuàng)建MaxNumber類(lèi),定義兩個(gè)getMax()方法,分別用來(lái)比較int類(lèi)型和double類(lèi)型變量并獲得最大值。publicclassMaxNumber{

publicstaticint

getMax(intnumber1,intnumber2){return(number1>number2?number1:number2);}

publicclassMaxNumber{

publicstaticint

getMax(…){…}publicstaticdoublegetMax(doublenumber1,doublenumber2){return(number1>number2?number1:number2);}publicstaticvoidmain(String[]args){

int

intMax=getMax(12,21);System.out.println("12和21最大值:"+intMax);doubledoubleMax=getMax(12.0,21.0);System.out.println("12.0和21.0最大值:"+doubleMax);}}8.3多態(tài)通過(guò)方法的重寫(xiě)實(shí)現(xiàn)多態(tài)是指一個(gè)給定類(lèi)型的變量可以引用不同類(lèi)型的對(duì)象,并且能夠自動(dòng)地調(diào)用變量所引用的對(duì)象類(lèi)型的特定成員方法。在Java中,實(shí)現(xiàn)這種處理機(jī)制的方法是利用指向父類(lèi)對(duì)象的引用指向其子類(lèi)對(duì)象,并根據(jù)該引用所指的當(dāng)前子類(lèi)類(lèi)型,選擇執(zhí)行哪一個(gè)子類(lèi)中重寫(xiě)的成員方法。classBaseClass{publicvoidf(){System.out.println("father");}}classDeriveClass1extendsBaseClass{publicvoidf(){System.out.println("son1");}}classDeriveClass2extendsBaseClass{publicvoidf(){System.out.println("son2");}}publicclassmyapp{publicstaticvoidmain(String[]args){

BaseClass

bc[]=newBaseClass[3];bc[0]=newBaseClass();bc[0].f();bc[1]=newDeriveClass1();bc[1].f();bc[2]=newDeriveClass2();bc[2].f();

}}fatherson1son28.4Object類(lèi)8.4.1getClass()方法8.4.2toString()方法8.4.3equals()方法8.4Object類(lèi)在Java中,所有的類(lèi)都直接或間接繼承了java.lang.Object類(lèi)。Object類(lèi)是所有類(lèi)的父類(lèi),是Java類(lèi)層中最高層類(lèi),Java中任何一個(gè)類(lèi)都是它的子類(lèi)。當(dāng)創(chuàng)建一個(gè)類(lèi)時(shí),總是在繼承,除非某個(gè)類(lèi)已經(jīng)指定要從其他類(lèi)繼承,否則它就是從java.lang.Object類(lèi)繼承而來(lái)的,如String、Integer等類(lèi)都是繼承于Object類(lèi)除此之外自定義的類(lèi)也都繼承于Object類(lèi)8.4Object類(lèi)由于所有類(lèi)都是Object子類(lèi),所以在定義類(lèi)時(shí),省略了extendsObject關(guān)鍵字。8.4Object類(lèi)Java將所有的類(lèi)都作為Object類(lèi)的子類(lèi)。1)一個(gè)Object類(lèi)型的對(duì)象可以用來(lái)引用任何類(lèi)的對(duì)象。2)可以將成員方法的參數(shù)設(shè)置為Object類(lèi)型,以方便方法能夠接收參數(shù)傳遞進(jìn)來(lái)的任何類(lèi)型的對(duì)象。3)在Object類(lèi)中提供了所有對(duì)象都應(yīng)該有的行為方法,可以更好地統(tǒng)一這些成員方法的接口形式。8.4Object類(lèi)1)getClass()方法getClass()方法是Object類(lèi)的定義的方法,它會(huì)返回對(duì)象執(zhí)行時(shí)的Class實(shí)例,然后使用此實(shí)例調(diào)用getName()方法可以取得類(lèi)的名稱(chēng)。語(yǔ)法如下:

getClass().getname();可以將getClass()方法與toString()方法聯(lián)合使用。8.4Object類(lèi)2)toString()方法toString()方法的功能是將一個(gè)對(duì)象返回為字符串形式,返回一個(gè)String實(shí)例。在實(shí)際應(yīng)用中通常重寫(xiě)toString()方法,為對(duì)象提供一個(gè)特定的輸出模式。當(dāng)這個(gè)類(lèi)轉(zhuǎn)換為字符串或與字符串連接時(shí),將自動(dòng)調(diào)用重寫(xiě)的toString()方法。在輸出引用類(lèi)型變量時(shí),也會(huì)自動(dòng)調(diào)用toString()方法。8.4Object類(lèi)【例8-6】重寫(xiě)toString方法publicclassToStringDemo{@Override

publicStringtoString(){return"ToStringDemo類(lèi)";

}publicstaticvoidmain(String[]args){

ToStringDemot=newToStringDemo();

System.out.println(t);

}}8.4Object類(lèi)toString()方法重寫(xiě)的幾點(diǎn)說(shuō)明必須被聲明為public返回類(lèi)型為String方法的名稱(chēng)必須為toString,且沒(méi)有參數(shù)在方法體中不要使用輸出方法System.out.println()8.4Object類(lèi)3)equals()方法“==”操作符可以用來(lái)比較兩個(gè)基本類(lèi)型的變量值是否相同,還可以比較兩個(gè)引用是否指向同一個(gè)對(duì)象。Object類(lèi)中定義的equals()方法,其默認(rèn)實(shí)現(xiàn)也是比較兩個(gè)引用是否指向同一個(gè)對(duì)象。這在實(shí)際開(kāi)發(fā)中并無(wú)任何意義。因此通常需要重寫(xiě)該方法來(lái)比較實(shí)際內(nèi)容是否相同。注意:Object類(lèi)中的getClass()、notify()、notifyAll()、wait()等方法不能被重寫(xiě),因?yàn)檫@些方法被定義為final類(lèi)型。8.4Object類(lèi)【例8-7】在項(xiàng)目中創(chuàng)建EqualsDemo類(lèi),在主方法中使用“==”和equals()方法來(lái)比較內(nèi)容相同的兩個(gè)字符串對(duì)象。publicstaticvoidmain(String[]args){ Strings1=newString("mrsoft");

Strings2=newString("mrsoft");

System.out.println(s1+"和"+s2+"指向同一對(duì)象:"+(s1==s2));System.out.println(s1+"和"+s2+"內(nèi)容相同:"+(s1.equals(s2)));}publicclassCircle{protectedintr;publicCircle(){r=0;}publicCircle(intr1){r=r1;}publicboolean

equals(Circles){if(s.r==r)returntrue;elsereturnfalse;}publicstaticvoidmain(String[]args){Circlec1=newCircle();Circlec2=newCircle(0);System.out.println(c1.equals(c2));

}}補(bǔ)充:裝箱和拆箱在java中,數(shù)據(jù)類(lèi)型總共可分為兩大種,基本數(shù)據(jù)類(lèi)型(值類(lèi)型)和類(lèi)類(lèi)型(引用數(shù)據(jù)類(lèi)型)?;绢?lèi)型的數(shù)據(jù)不是對(duì)象,不能作為對(duì)象調(diào)用其toString()、hashCode()、getClass()、equals()等等方法。所以在java中,針對(duì)8種基本數(shù)據(jù)類(lèi)型,提供了針對(duì)每個(gè)基本數(shù)據(jù)類(lèi)型的包裝類(lèi)。INDEX基本數(shù)據(jù)類(lèi)型包裝類(lèi)

1 int Integer

2 char Character

3 float

Float

4 double

Double

5 byte

Byte

6 short

Short

7 long

Long

8 boolean

Boolean補(bǔ)充:裝箱和拆箱補(bǔ)充:裝箱和拆箱所謂裝箱,就是把基本類(lèi)型用它們相應(yīng)的引用類(lèi)型包起來(lái),使它們可以具有對(duì)象的特質(zhì)把int型包裝成Integer類(lèi)的對(duì)象,把double包裝成Double,等等。所謂拆箱,就是跟裝箱的方向相反,將Integer及Double這樣的引用類(lèi)型的對(duì)象重新簡(jiǎn)化為值類(lèi)型的數(shù)據(jù)。補(bǔ)充:裝箱和拆箱//JDK1.5之前使用手動(dòng)方式進(jìn)行裝箱和拆箱的操作publicclassIntegerDemo{

publicstaticvoidmain(String[]agrs){

inti=10;

Integerj=newInteger(i); //手動(dòng)裝箱操作

inti1=Value(); //手動(dòng)拆箱操作

System.out.println(i1*i1);

}

}publicclassIntegerDemo02{

publicstaticvoidmain(String[]agrs){

inti=10

Integerj=i;

intk=j;

System.out.println(++k);

}

}補(bǔ)充:裝箱和拆箱//JDK1.5之后可自動(dòng)進(jìn)行的裝箱和拆箱的操作,比較方便8.5對(duì)象類(lèi)型的轉(zhuǎn)換8.5.1向上轉(zhuǎn)型8.5.2向下轉(zhuǎn)型8.5.1向上轉(zhuǎn)型向上轉(zhuǎn)型:將子類(lèi)對(duì)象看做是父類(lèi)的對(duì)象。向上轉(zhuǎn)型是從一個(gè)較具體的類(lèi)到較抽象的類(lèi)之間的轉(zhuǎn)換,總是安全的。8.5.1向上轉(zhuǎn)型【例8-8】創(chuàng)建Parallelogram類(lèi),在類(lèi)中創(chuàng)建Quadrangle類(lèi),并使Parallelogram類(lèi)繼承Quadrangle類(lèi),然后在主方法中調(diào)用父類(lèi)的draw()方法。classQuadrangle{

publicstaticvoiddraw(Quadrangleq){

//SomeSentence}}publicclassParallelogramextendsQuadrangle{

publicstaticvoidmain(String

args[]){Parallelogramp=newParallelogram();

draw(p);

}}8.5.2向下轉(zhuǎn)型向下轉(zhuǎn)型是將較抽象類(lèi)轉(zhuǎn)換為較具體的類(lèi)。子類(lèi)對(duì)象總是父類(lèi)的一個(gè)實(shí)例,但是父類(lèi)對(duì)象不一定是子類(lèi)的實(shí)例。因此在程序中使用向下轉(zhuǎn)型技術(shù)時(shí),必須使用顯式類(lèi)型轉(zhuǎn)換,向編譯器指明將父類(lèi)對(duì)象轉(zhuǎn)換為哪一種類(lèi)型的子類(lèi)對(duì)象。8.5.2向下轉(zhuǎn)型【例8-9】修改例8-8,在Parallelogram類(lèi)的主方法中將父類(lèi)Quadrangle的對(duì)象賦值給子類(lèi)Parallelogram的對(duì)象的引用變量將使程序產(chǎn)生錯(cuò)誤。classQuadrangle{publicstaticvoiddraw(Quadrangleq){//SomeSentence}}publicclassParallelogramextendsQuadrangle{publicstaticvoidmain(String

args[]){

draw(newParallelogram());

Quadrangleq=newParallelogram();//Parallelogramp=q;

Parallelogramp=(Parallelogram)q;}}8.5.2向下轉(zhuǎn)型如果將父類(lèi)對(duì)象直接賦予子類(lèi),將會(huì)發(fā)生編譯器錯(cuò)誤,因?yàn)楦割?lèi)對(duì)象不一定是子類(lèi)實(shí)例例如一個(gè)四邊形不一定就是指平行四邊形,也許它是梯形,也許是正方形,也許是其他帶有四個(gè)邊的不規(guī)則圖形。8.5.2向下轉(zhuǎn)型做向下轉(zhuǎn)型操作時(shí),將特性范圍小的對(duì)象轉(zhuǎn)換為特性范圍大的對(duì)象肯定會(huì)出現(xiàn)問(wèn)題,所以這時(shí)需要告知編譯器這個(gè)四邊形就是平行四邊形,將父類(lèi)對(duì)象強(qiáng)制轉(zhuǎn)換為某個(gè)子類(lèi)對(duì)象,這種方式稱(chēng)為顯式類(lèi)型轉(zhuǎn)換8.1接口的使用8.1.1接口的定義8.1.2接口的實(shí)現(xiàn)8.1接口的使用可以把用于完成特定功能的若干屬性(方法)組織成相對(duì)獨(dú)立的屬性(方法)集合,凡是需要實(shí)現(xiàn)這種特定功能的類(lèi),都可以繼承這個(gè)集合,并在類(lèi)內(nèi)使用它,這種集合就是接口。8.1.1接口的定義使用interface來(lái)定義一個(gè)接口。接口定義同類(lèi)的定義類(lèi)似,也是分為接口的聲明和接口體,其中接口體由變量定義和方法定義兩部分組成。定義接口的基本語(yǔ)法格式如下:[修飾符]interface接口名[extends父接口名列表]{[public][static][final]變量;[public][abstract]方法;}8.1.1接口的定義

表8-1定義接口的語(yǔ)法格式的參數(shù)說(shuō)明

參數(shù)說(shuō)明修飾符可選參數(shù),用于指定接口的訪問(wèn)權(quán)限,可選值為public。如果省略則使用默認(rèn)的訪問(wèn)權(quán)限接口名必選參數(shù),用于指定接口名稱(chēng),接口名必須是合法的Java標(biāo)識(shí)符。一般情況下,要求首字母大寫(xiě)extends父接口列表可選參數(shù),用于指定要定義的接口繼承于哪個(gè)父接口。當(dāng)使用extends關(guān)鍵字時(shí),父接口名為必選參數(shù)方法接口中的的方法只有定義而沒(méi)有被實(shí)現(xiàn)8.1.1接口的定義接口的特點(diǎn):與抽象類(lèi)一樣都是定義多個(gè)類(lèi)的共同屬性使抽象概念更深入了一層,是一個(gè)“純”抽象類(lèi),它只提供一種形式,并不提供實(shí)現(xiàn)允許創(chuàng)建者規(guī)定方法的基本形式:方法名、參數(shù)列表以及返回類(lèi)型,但不規(guī)定方法主體也可以包含基本數(shù)據(jù)類(lèi)型的數(shù)據(jù)成員,但它們都默認(rèn)為static和final8.1.1接口的定義【例8-1】創(chuàng)建接口

publicinterfaceICircle{doublePI=3.14159;doublegetCircumference(doubleradius);doublegetArea(doubleradius);doublegetVolume(doubleradius);}8.1.2接口的實(shí)現(xiàn)因?yàn)榻涌谥械膶傩远际浅A?,接口中的方法都是沒(méi)有方法體的抽象方法。接口定義的僅僅是實(shí)現(xiàn)某一特定功能的一組功能的對(duì)外接口和規(guī)范,而并沒(méi)有真正實(shí)現(xiàn)這個(gè)功能,這個(gè)功能的真正實(shí)現(xiàn)是在“繼承”這個(gè)接口的各個(gè)類(lèi)中完成的,要由這些類(lèi)來(lái)具體定義接口中各抽象方法的方法體。8.1.2接口的實(shí)現(xiàn)接口的應(yīng)用:規(guī)定某些類(lèi)應(yīng)該實(shí)現(xiàn)的方法調(diào)用接口。通過(guò)定義一個(gè)能實(shí)現(xiàn)多個(gè)接口的類(lèi),模擬類(lèi)的多重繼承。接口在定義后,就可以在類(lèi)中實(shí)現(xiàn)該接口。8.1.2接口的實(shí)現(xiàn)在類(lèi)中實(shí)現(xiàn)接口可以使用關(guān)鍵字implements基本語(yǔ)法格式如下所示:[修飾符]class<類(lèi)名>[extends父類(lèi)名][implements接口列表]{}

在非抽象類(lèi)中實(shí)現(xiàn)接口時(shí),方法名、返回值類(lèi)型、參數(shù)的個(gè)數(shù)及類(lèi)型必須與接口中的完全一致,并且必須實(shí)現(xiàn)接口中的所有方法。8.1.2接口的實(shí)現(xiàn)【例8-2】創(chuàng)建類(lèi)實(shí)現(xiàn)接口publicclassCircleimplementsICircle

{@OverridepublicdoublegetCircumference(doubleradius){ return2*PI*radius;}

@OverridepublicdoublegetArea(doubleradius){ returnPI*radius*radius;}

@Override

publicdoublegetVolume(doubleradius){ return4*PI*radius*radius*radius/3.0;}}8.6instanceof判斷對(duì)象類(lèi)型當(dāng)在程序中執(zhí)行向下轉(zhuǎn)型操作時(shí),如果父類(lèi)對(duì)象不

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論