資源描述:
《《接口與實(shí)現(xiàn)》PPT課件》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第7章接口與實(shí)現(xiàn)Java不支持多繼承性,即一個(gè)類只能有一個(gè)父類。單繼承性使得Java簡(jiǎn)單,易于管理程序。為了克服單繼承的缺點(diǎn),Java使用了接口,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。使用關(guān)鍵字interface來(lái)定義一個(gè)接口。接口的定義和類的定義很相似,分為接口的聲明和接口體。9/8/20211信息學(xué)院7.1.1接口的聲明與使用(1)接口聲明接口通過(guò)使用關(guān)鍵字interface來(lái)聲明interface接口的名字(2)接口體接口體中包含常量定義和方法定義兩部分。接口體中只進(jìn)行方法的聲明,不許提供方法的實(shí)現(xiàn),所以方法的定義沒(méi)有方法體,且用分號(hào)結(jié)尾。7.1接口9/8/20212信息學(xué)院例:i
2、nterfaceRunner{publicstaticfinalintid=1;publicvoidstart();publicvoidrun();publicvoidstop();}7.1接口9/8/20213信息學(xué)院(3)接口的使用一個(gè)類通過(guò)使用關(guān)鍵字implements聲明自己使用一個(gè)或多個(gè)接口。如果使用多個(gè)接口,用逗號(hào)隔開(kāi)接口名。如:classAimplementsPrintable,AddableclassDogextendsAnimalimplementsEatable,Sleepable7.2實(shí)現(xiàn)接口9/8/20214信息學(xué)院7.2實(shí)現(xiàn)接口如果一個(gè)類使用了某個(gè)
3、接口,那么這個(gè)類必須實(shí)現(xiàn)該接口的所有方法,即為這些方法提供方法體。需要注意的是在類中實(shí)現(xiàn)接口的方法時(shí),方法的名字、返回類型、參數(shù)個(gè)數(shù)及類型必須與接口中的完全一致。特別要注意的是接口中的方法被默認(rèn)是public的,所以類在實(shí)現(xiàn)接口方法時(shí)一定要用public來(lái)修飾。9/8/20215信息學(xué)院如果接口的方法的返回類型不是void的,那么在類中實(shí)現(xiàn)該接口方法時(shí),方法體至少要有一個(gè)return語(yǔ)句。如果是void型,類體除了兩個(gè)大括號(hào)外,也可以沒(méi)有任何語(yǔ)句。7.2實(shí)現(xiàn)接口Java為我們提供的接口都在相應(yīng)的包中,通過(guò)引入包可以使用Java提供的接口。也可以自己定義接口,一個(gè)java源文
4、件就是由類和接口組成的。9/8/20216信息學(xué)院例:importjava.applet.*;importjava.awt.*;interfaceComputable{finalintMAX=100;voidspeak(Strings);intf(intx);floatg(floatx,floaty);}classChinaimplementsComputable{intxuehao;publicintf(intx){//不要忘記public關(guān)鍵字.intsum=0;for(inti=1;i<=x;i++){sum=sum+i;}returnsum;}9/8/20217信息
5、學(xué)院publicfloatg(floatx,floaty){return6;//至少有return語(yǔ)句.}publicvoidspeak(Strings){}}classJapanimplementsComputable{intxuehao;publicintf(intx){return68;}publicfloatg(floatx,floaty){returnx+y;}9/8/20218信息學(xué)院publicvoidspeak(Strings){}publicclassExample4_26extendsApplet{ChinaLi;JapanHenlu;publicvoi
6、dinit(){Li=newChina();Henlu=newJapan();Li.xuehao=991898;Henlu.xuehao=941448;}9/8/20219信息學(xué)院publicvoidpaint(Graphicsg){g.drawString("xuehao:"+Li.MAX+Li.xuehao+"從1到100求和"+Li.f(100),10,20);g.drawString("xuehao:"+Henlu.MAX+Henlu.xuehao+"加法"+Henlu.g(2.0f,3.0f),10,40);}}注:如果一個(gè)類聲明實(shí)現(xiàn)一個(gè)接口,但沒(méi)有實(shí)現(xiàn)接口中的所
7、有方法,那么這個(gè)類必須是abstract類。9/8/202110信息學(xué)院接口的語(yǔ)法規(guī)則很容易記住,但真正理解接口更重要。你可能注意到,在上述例子26中如果去掉接口,并把程序中的Li.MAX,Henlu.MAX去掉,上述程序的運(yùn)行沒(méi)有任何問(wèn)題。那為什么要用接口呢?7.3理解接口9/8/202111信息學(xué)院假如轎車、卡車、拖拉機(jī)、摩托車、客車都是機(jī)動(dòng)車的子類,其中機(jī)動(dòng)車是一個(gè)抽象類。如果機(jī)動(dòng)車中有一個(gè)抽象方法“收取費(fèi)用”,那么所有的子類都要實(shí)現(xiàn)這個(gè)方法,即給出方法體,產(chǎn)生各自的收費(fèi)行為。這顯然不符合人們的思維方法,因?yàn)?/p>