第14講包和接口(下)_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1/,第13講 包和接口(三),,上講回顧,接口的定義和實現Collection接口抽象類及其應用類File 、String、 StringBuffer中常用方法掌握System類的常用方法會使用Math類的常用方法會使用Random類的常用方法,本講教學目標,理解Vector類及其常用方法理解接口5、6、7章習題,Vector類,Vector類是Java語言提供的一種高級數據結構,可用于保存一系列對象。實際上,Java

2、并不支持動態(tài)數組,Vector類提供了一種與"動態(tài)數組"相近的功能。如果不能事先確定要保存的對象的數目,或是需要方便獲得某個對象的存放位置時,可以選擇Vector類。,Vector 有3個 構 造方法:public Vector();public Vector(int initialCapacity);public Vector(int initialCapacity,int capacityIncrement

3、); 第一個構造方法既不指定初始的存儲容量,也不規(guī)定增長的增量,只是創(chuàng)建一個空的向量。 第二個構造方法創(chuàng)建一個具有initialCapacity個元素空間的向量,但沒有指定增長的增量。 第三個構造方法在創(chuàng)建Vector對象時指定了初始的存儲容量initialCapacity的向量,并且當向量需要增長以向里面追加元素時,一次性增加capacityIncrement個元素。,Vector類的構造方法,public bool

4、ean add(Object obj) 將對象obj添加到向量的末尾。public void add(int index,Object obj) 將對象obj插入到向量的指定位置。public final synchronized void addElement(Object obj) 將對象obj插入向量的尾部。對同一個向量對象,可在其中插入不同類的對象。注意插入的應是對象而不是數值,所以插入數值時要注意將數值轉換成相應的對

5、象。 setElementAt(Object obj, int index) 將index處的對象替換成obj,原來的對象將被覆蓋。public void set(int index,Object obj) 把指定位置處的元素用對象obj替換掉。,Vector類的常用方法,removeElement(Object obj) 從向量中刪除obj對象。若有存在多個obj對象,則刪除第一個obj對象,同時將后面所有對象前移一位。r

6、emoveAllElements() 刪除向量中所有的對象。public final synchronized void removeElementlAt(int index) 刪除index所指的對象,并將后面的所有對象前移一位。public final int indexOf(Object obj) 從向量頭開始搜索obj ,返回所遇到的第一個obj對應的下標,若不存在此obj,返回-1。,Vector類的常用方法(續(xù)),

7、public final int indexOf(Object obj,int index) 從指定位置查找對象obj在此向量中首次出現的位置。public final int lastIndexOf(Object obj) 從向量尾部開始逆向搜索obj,返回對象obj最后一次出現的下標,若不存在此obj,返回-1。public int lastIndexOf(Object obj,int index) 對象obj在位置

8、index之前最后一次出現的位置。public Object firstElement() 獲取此向量的第一個元素。,Vector類的常用方法(續(xù)),public Object lastElement() 獲取此向量的最后一個元素。public Object get(int index) 獲取此向量指定位置處的元素。public Object remove(int index) 從此向量中刪除指定位置處的元素,并返回這個元

9、素。public final int size() 獲取向量所含有的元素的個數。public int setSize(int size)  重新設置向量的大小,若原向量的大小比size大,則放棄后面的元素。public final synchronized Enumeration elements() 獲取一個枚舉對象。,Vector類的常用方法(續(xù)),import java.util.Vector;import java

10、.util.Enumeration;public class Ex7_12 { public static void main(String[] args) { Vector vector=new Vector(); Integer integer1=new Integer(1); vector.addElement("one");/

11、/加入的為字符串對象 vector.addElement(integer1); vector.addElement(integer1);//加入的為Integer的對象 vector.addElement("two"); vector.addElement(new Integer(2)); vector.ad

12、dElement(integer1); vector.addElement(integer1); System.out.println("The first vector is: "+vector); vector.insertElementAt("three",2); vector.insertElementA

13、t(new Float(3.14),3);,Vector類舉例,在指定位置插入新對象,指定位置后的對象依次往后順延,System.out.println("The second vector is: "+vector); vector.setElementAt("four",2); System.out.println("The third ve

14、ctor is: "+vector); vector.removeElement(integer1); Enumeration enum=vector.elements();//枚舉接口 System.out.print("The four vector is:"); while(enum.hasMoreElement

15、s()) System.out.print(enum.nextElement()+" "); System.out.println(); System.out.println("The first position of object1:"+vector.indexOf(integer1));

16、 System.out.println("The last position of object 1:"+vector.lastIndexOf(integer1)); vector.setSize(4); System.out.println("The new vectoris:"+vector); }},Vector類舉例(續(xù))

17、,實例,接口可以象類一樣實現多繼承,請分析下面的程序。,public class Ex7_13{ public static void t(CanFight x){ x.fight(); } public static void u(CanSwim x){ x.swim(); } public static void v(CanFly x){ x.fl

18、y();} public static void w(ActionCharacter x){x.fight();}public static void main(String args[]){ Hero h=new Hero(); t(h); u(h); v(h); w(h); }},package no

19、12.ex7;interface CanFight{ void fight();}interface CanSwim{ void swim();}interface CanFly{ void fly();}class ActionCharacter { public void fight(){ System.out.println("can fight!");

20、 } }class Hero extends ActionCharacter implements CanFight,CanSwim,CanFly { public void swim(){ System.out.println("can swim"); } public void fly(){ System.out.println(&

21、quot;can fly"); } },理解接口,接口的語法規(guī)則很容易記住,但真正理解接口更重要。那為什么要用接口呢? 假如轎車、卡車、拖拉機、摩托車、客車都是機動車的子類,其中機動車是一個抽象類。如果機動車中有一個抽象方法 “收取費用”,那么所有的子類都要實現這個方法,即給出方法體,產生各自的收費行為。這顯然不符合人們的思維方法,因為拖拉機可能不需要有”收取費用”的功能,而其他的一些類,比如飛機、輪船等可

22、能也需要具體實現”收取費用”。,理解接口,接口可以增加很多類都需要實現的功能,不同的類可以使用相同的接口,同一個類也可以實現多個接口。接口只關心功能,并不關心功能的具體實現,比如”客車類”實現一個接口,該接口中有一個”收取費用”的方法,那么這個”客車類”必須具體給出怎樣收取費用的操作,即給出方法的方法體,不同車類都可以實現”收取費用”,但”收取費用”的手段可能不相同。接口的思想在于它可以增加很多類都需要實現的功能,使用相同的接口類不一定

23、有繼承關系,就象各式各樣的商品,它們可能隸屬不同的公司,工商部門要求都必須具有顯示商標的功能。實現同一接口 ,但商標的具體制作由各個公司自己去實現。,再比如,你是一個項目主管,你需要管理許多部門,這些部門要開發(fā)一些軟件所需要的類,你可能要求某個類實現一個接口,也就是說你對一些類是否具有這個功能非常關心,但不關心功能的具體體現,比如這個功能是speakLove ,但你不關心是用漢語實現功能speakLove 或用英語實現speakLove

24、。在某些時候,你也許打一個電話就可以了,告訴遠方的一個開發(fā)部門實現你所規(guī)定的接口,并建議他們用漢語來實現speakLove。如果沒有這個接口,你可能要化很多的口舌來讓你的部門找到那個表達愛的方法,也許他們給表達愛的那個方法起的名字是完全不同的名字。,理解接口,接口使用,接口(interface)就是方法定義和常量值的集合。從本質上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有方法的實現。 通過接口可以實現不相關

25、類的相同行為,而不需要考慮這些類之間的層次關系。 通過接口可以指明多個類需要實現的方法。 通過接口可以了解對象的交互界面,而不需了解對象所對應的類。,接口實例 interface 收費{ public void 收取費用(); } class 公共汽車 implements 收費{ public void 收取費用(){ Sy

26、stem.out.println("公共汽車:一元/張,不計算公里數"); } } class 出租車 implements 收費{ public void 收取費用(){ System.out.println("出租車:1.60元/公里,起價3公里"); } },class

27、 電影院 implements 收費{ public void 收取費用(){ System.out.println("電影院:門票,十元/張"); }}class Example4 { public static void main(String args[]){ 公共汽車 七路=new 公共汽車(); 出租車

28、 天宇=new 出租車(); 電影院 紅星=new 電影院(); 七路.收取費用();天宇.收取費用(); 紅星.收取費用(); }},注:接口聲明時,如果關鍵字interface 前面加上public 關鍵字,就稱這樣的接口是一個public 接口,public 接口可以被任何一個類使用。如果一個接口不加public 修飾,就稱做友好接口類,友好接口可以被同一

29、包中的類使用。接口回調是指可以把實現某一接口的類創(chuàng)建的對象的引用賦給該接口聲明的接口變量中。那么該接口變量就可以調用被類實現的接口中的方法。實際上,當接口變量調用被類實現的接口中的方法時,就是通知相應的對象調用接口的方法。,接口回調,接口回調示例,interface ShowMessage{ void 顯示商標(String s); } class TV implements ShowM

30、essage{ public void 顯示商標(String s){ System.out.println(s); } } class PC implements ShowMessage{ public void 顯示商標(String s){ System.out.println(s);

31、 } },接口回調示例,public class Example5{ public static void main(String args[]) { ShowMessage sm; sm=new TV(); sm.顯示商標("長城牌電視機"); sm=new PC(); sm.顯示商標(&q

32、uot;聯想奔月5008PC機"); }},第7章小結,包是類和接口的集合,包可以嵌套。類用一個package語句定義所屬的包。Import語句使包中定義的類和接口可以直接按名引用。包又分為用戶自定義包和系統(tǒng)包。用戶自定義包是由用戶自己定義的,相當于文件系統(tǒng)中的文件夾,用來存放用戶定義的類。接口是常量和抽象方法的集合。接口是Java對多重繼承的解決方法。類實現接口的方法是把該接口加入implements語句

33、,并且實現接口及其父接口中的所有抽象方法。Java系統(tǒng)包中大量的類,如:File類、System類、以及Math類和Vector類。,第5章復習,以下程序的功能是,統(tǒng)計數組{56,90,89,23,45,61,60,59}中元素值小于60的個數,并輸出。請將程序補充完整。注意:請勿改動程序已有內容,僅在?處填入適當的語句。public class Java1{public static void main(String[] a

34、rgs) {int score[]={56,90,89,23,45,61,60,59};int num=0;int len=score.?;int i=0;while(i<?){   if(?<60)  num++;?;     ?。齋ystem.out.println("<60:"+num);}},第6章復習,仔細閱讀程序,完成類Ja

35、va1的定義,并將程序補充完整。注意:請勿改動程序已有內容,僅在?處填入適當的語句。public class Java1{int num1;double num2; public Java1(?) {num1=a;num2=b; }public static void main(String[] args){int a=23;double b=4.5;Java1 ex=new Java1

36、(a,b);System.out.println("num1="+?);System.out.println("num2="+?);}},第7章復習,1. 已知有一個接口A,如下:interface A {   int method1(int i); int method2(int j);} 下列哪個類實現了接口A,并且該類不是抽象類?A、c

37、lass B implement A { int method1( ) { } int method2( ) { } }B、class B { int method1( int i) { } int method2( ) {int j } }C、class B impleme

38、nt A { int method1( int i) { } int method2( int j) { } }D、class B extends A { int method1( int i) { } int method2(int j ) { } },2.下列有關接口的描述不

溫馨提示

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

評論

0/150

提交評論