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