《接口與多態(tài)》PPT課件.ppt_第1頁
《接口與多態(tài)》PPT課件.ppt_第2頁
《接口與多態(tài)》PPT課件.ppt_第3頁
《接口與多態(tài)》PPT課件.ppt_第4頁
《接口與多態(tài)》PPT課件.ppt_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第6章 接口與多態(tài),主要內容 接口 接口回調 面向接口編程 難點 面向接口編程,導學,Java不支持多繼承性,即一個類只能有一個父類。單繼承性使得Java簡單,易于管理和維護。Java的接口更加符合人的思維方式,6.1 接 口,使用關鍵字interface來定義一個接口。接口的定義和類的定義很相似,分為接口的聲明和接口體。,6.1.1 接口的聲明與使用,接口通過使用關鍵字interface來聲明,格式: interface 接口的名字,1接口聲明,接口是一組常量和抽象方法的集合。 (1)接口的訪問權限是public或缺省權限。 (2)接口中成員變量聲明格式如下: public static final 成員變量名=常量 接口中成員方法聲明格式如下: public abstract 返回值類型 成員方法名(參 數(shù)表) 注意:接口中成員變量和成員方法的格式是固定的,故可以省略。,2接口體,舉例,interface Printable public static final int MAX=100; public abstract void add( ); public abstract float( float x, float y); ,接口的示例,public interface Shape1 public static final PI=3.14; public abstract double area(); public abstract double volume(double x); public abstract void show(); ,接口的特點,(1)接口可以定義多重繼承 (2)接口不存在最高層,而Java中類的最高層是Object類。 (3)接口中的方法只能被聲明為public abstract 接口中成員變量只能用public static final 來聲明。 (4)接口中的方法不能定義方法體。,在Java語言中,接口由類去實現(xiàn)以便使用接口中的方法。一個類可以實現(xiàn)多個接口,類通過使用關鍵字implements聲明自己實現(xiàn)一個或多個接口。如果實現(xiàn)多個接口,則用逗號隔開接口名 如: class A implements Printable,Addable,3接口的使用,重要性質,如果一個類實現(xiàn)了接口,那么這個類必須重寫該接口的所有方法 重寫接口的方法時,接口中的方法一定是public abstract 方法,所以類在重寫接口方法時不僅要去掉abstract 修飾,給出方法體,而且方法的訪問權限一定要用public 來修飾。,例6-1,public interface Computable int MAX=100; int f(int x); public class China implements Computable /China類實現(xiàn)Computable接口 int number; public int f(int x) /不要忘記public關鍵字 int sum=0; for(int i=1;i=x;i+) sum=sum+i; return sum; ,public class Japan implements Computable /Japan類實現(xiàn)Computable接口 int number; public int f(int x) return 46+x; ,public class Example6_1 public static void main(String args) China zhang; Japan henlu; zhang=new China(); henlu=new Japan(); zhang.number=28+Computable.MAX; henlu.number=14+Computable.MAX; System.out.println(“zhang的學號“+zhang.number+“,zhang求和結果“+zhang.f(100); System.out.println(“henlu的學號“+henlu.number+“,henlu求和結果“+henlu.f(100); ,說明,(1)如果父類實現(xiàn)了某接口,那么子類也就實現(xiàn)了該接口,子類不必顯式地使用關鍵字implements聲明實現(xiàn)了接口 (2)接口聲明時,關鍵字interface前可加public (3)如果一個類聲明實現(xiàn)了一個接口,但沒有重寫接口中的所有方法,那么這個類必須是abstract類,interface Computable final int MAX=100; void speak(String s); int f(int x); float g(float x,float y); abstract class A implements Comutable public int f(int x) int sum=0; for(int i=1;i=x;i+) sum+=i; return sum; ,6.1.2 理解接口,接口可以增加很多類都需要的功能,不同類可以實現(xiàn)相同的接口,同一個類也可以實現(xiàn)多個接口。,接口提供了方法聲明與實現(xiàn)相分離的機制,使實現(xiàn)接口的多個類表現(xiàn)出相同的行為模式。,當一個類不希望通過繼承使得自己具有某個方法時,就可以考慮去實現(xiàn)接口而不是把自己聲明為某個類的子類。,例6-2,見教材,6.1.3 接口的UML圖,頂部是名字層,接口名必須是斜體,而且需要用 第二層是常量層 第三層是方法層,6.2 接口回調(重點),6.2.1 接口變量與回調機制 6.2.2 接口的多態(tài)性 6.2.3 abstract 類與接口的區(qū)別,6.2.1 接口變量與回調機制,接口是一種數(shù)據(jù)類型,用接口聲明的變量稱為接口變量 接口變量中可以存放實現(xiàn)接口的類的實例的引用。 接口回調? 可以把實現(xiàn)某一接口的類創(chuàng)建的對象的引用賦給該接口聲明的變量中,那么該接口變量就可以調用被類實現(xiàn)的接口方法 接口回調類似于上轉型對象調用子類的重寫方法 注意:接口變量無法調用類中的其他非接口方法,例6-3,interface ShowMessage void 顯示商標(String s); class TV implements ShowMessage public void 顯示商標(String s) System.out.println(s); class PC implements ShowMessage public void 顯示商標(String s) System.out.println(s); public class Example6_3 public static void main(String args) ShowMessage sm; /聲明接口變量 sm=new TV(); /接口變量中存放對象的引用 sm.顯示商標(“長城牌電視機“); /接口回調。 sm=new PC(); /接口變量中存放對象的引用 sm.顯示商標(“聯(lián)想奔月5008PC機“); /接口回調 ,6.2.2 接口的多態(tài)性,繼承只能讓父類引用指向與其屬于同一類的對象,例如肉類引用只能指向屬于肉的對象。 接口引用則能指向任意類型的對象,即使對象間沒有任何關系,只要這些對象所在的類實現(xiàn)了該接口,interface Food public void doEat();/吃食物的方法 abstract class Fruit abstract class Meat class Apple extends Fruit implements Food /實現(xiàn)接口中的方法 public void doEat() System.out.println(“我是蘋果,我屬于水果,我可以充當食物被吃掉!“); class Beef extends Meat implements Food /實現(xiàn)接口中的方法 public void doEat() System.out.println(“我是牛肉,我屬于肉類,我可以充當食物被吃掉!“); ,示例(續(xù)),public class Test public static void main(String args ) Food f=new Apple();/創(chuàng)建蘋果對象 f.doEat();/調用蘋果的吃法 f=new Beef();/創(chuàng)建牛肉的對象 f.doEat();/調用牛肉的吃法 ,例6-4,見教材,6.2.3 abstract 類與接口的區(qū)別(牢記),相同點 (1)都包含抽象方法 (2)都不能被實例化 (3)都是引用數(shù)據(jù)類型,區(qū)別,(1)一個類只能繼承一個抽象類,而一個類可以實現(xiàn)多個接口 (2)接口中的成員的訪問權限都是public,而抽象類中成員的訪問權限和普通類一樣 (3)抽象類中可以聲明成員變量,成員變量的值可以被更改;接口中只能聲明常量 (4)抽象類中可以聲明抽象方法、普通成員方法以及構造方法;接口中只能聲明抽象方法。,6.3 面向接口編程,抽象類最本質的特性就是可以包含有抽象方法 接口中只有抽象方法,接口中將其抽象方法的實現(xiàn)交給實現(xiàn)該接口的類 使用接口進行程序設計的核心思想是使用接口回調 開閉原則:對擴展開放,對修改關閉。,例6-5,設計一個廣告牌,希望所設計的廣告牌可以展示許多公司的廣告詞 (1)分析 廣告牌可以展示很多公司,要做抽取。抽取出這么多公司的廣告的共性 (2)設計接口 設計一個接口Advertisement,該接口有兩個方法 showAdvertisement( )和getCorpName( ).各個公司要實現(xiàn)該接口,例6-5,(3)設計廣告牌類 該類有一個show(Advertisement adver)方法。可以接收任何實現(xiàn)了Advertisement接口的類的對象。,Advertisement.java public interface Advertisement /接口 public void showAdvertisement(); public String getCorpName(); ,AdvertisementBoard.java public class AdvertisementBoard /負責創(chuàng)建廣告牌 public void show(Advertisement adver) System.out.println(adver.getCorpName()+“的廣告詞如下:“); adver.showAdvertisement(); /接口回調 ,WhiteCloudCorp.java public class WhiteCloudCorp implements Advertisement /PhilipsCorp實現(xiàn)Avertisement接口 public void showAdvertisement() System.out.println(“); System.out.printf(“飛機中的戰(zhàn)斗機,哎yes!n“); System.out.println(“); public String getCorpName() return “白云有限公司“ ; ,BlackLandCorp.java public class BlackLandCorp implements Advertisement public void showAdvertisement() System.out.println(“*“); System.out.printf(“勞動是爹n土地是媽n想種啥來n就往外接n“); System.out.println(“*“); public String getCorpName() retur

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論