版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1/,第13講 包和接口(三),,上講回顧,接口的定義和實(shí)現(xiàn)Collection接口抽象類及其應(yīng)用類File 、String、 StringBuffer中常用方法掌握System類的常用方法會(huì)使用Math類的常用方法會(huì)使用Random類的常用方法,本講教學(xué)目標(biāo),理解Vector類及其常用方法理解接口5、6、7章習(xí)題,Vector類,Vector類是Java語言提供的一種高級(jí)數(shù)據(jù)結(jié)構(gòu),可用于保存一系列對(duì)象。實(shí)際上,Java
2、并不支持動(dòng)態(tài)數(shù)組,Vector類提供了一種與"動(dòng)態(tài)數(shù)組"相近的功能。如果不能事先確定要保存的對(duì)象的數(shù)目,或是需要方便獲得某個(gè)對(duì)象的存放位置時(shí),可以選擇Vector類。,Vector 有3個(gè) 構(gòu) 造方法:public Vector();public Vector(int initialCapacity);public Vector(int initialCapacity,int capacityIncrement
3、); 第一個(gè)構(gòu)造方法既不指定初始的存儲(chǔ)容量,也不規(guī)定增長的增量,只是創(chuàng)建一個(gè)空的向量。 第二個(gè)構(gòu)造方法創(chuàng)建一個(gè)具有initialCapacity個(gè)元素空間的向量,但沒有指定增長的增量。 第三個(gè)構(gòu)造方法在創(chuàng)建Vector對(duì)象時(shí)指定了初始的存儲(chǔ)容量initialCapacity的向量,并且當(dāng)向量需要增長以向里面追加元素時(shí),一次性增加capacityIncrement個(gè)元素。,Vector類的構(gòu)造方法,public bool
4、ean add(Object obj) 將對(duì)象obj添加到向量的末尾。public void add(int index,Object obj) 將對(duì)象obj插入到向量的指定位置。public final synchronized void addElement(Object obj) 將對(duì)象obj插入向量的尾部。對(duì)同一個(gè)向量對(duì)象,可在其中插入不同類的對(duì)象。注意插入的應(yīng)是對(duì)象而不是數(shù)值,所以插入數(shù)值時(shí)要注意將數(shù)值轉(zhuǎn)換成相應(yīng)的對(duì)
5、象。 setElementAt(Object obj, int index) 將index處的對(duì)象替換成obj,原來的對(duì)象將被覆蓋。public void set(int index,Object obj) 把指定位置處的元素用對(duì)象obj替換掉。,Vector類的常用方法,removeElement(Object obj) 從向量中刪除obj對(duì)象。若有存在多個(gè)obj對(duì)象,則刪除第一個(gè)obj對(duì)象,同時(shí)將后面所有對(duì)象前移一位。r
6、emoveAllElements() 刪除向量中所有的對(duì)象。public final synchronized void removeElementlAt(int index) 刪除index所指的對(duì)象,并將后面的所有對(duì)象前移一位。public final int indexOf(Object obj) 從向量頭開始搜索obj ,返回所遇到的第一個(gè)obj對(duì)應(yīng)的下標(biāo),若不存在此obj,返回-1。,Vector類的常用方法(續(xù)),
7、public final int indexOf(Object obj,int index) 從指定位置查找對(duì)象obj在此向量中首次出現(xiàn)的位置。public final int lastIndexOf(Object obj) 從向量尾部開始逆向搜索obj,返回對(duì)象obj最后一次出現(xiàn)的下標(biāo),若不存在此obj,返回-1。public int lastIndexOf(Object obj,int index) 對(duì)象obj在位置
8、index之前最后一次出現(xiàn)的位置。public Object firstElement() 獲取此向量的第一個(gè)元素。,Vector類的常用方法(續(xù)),public Object lastElement() 獲取此向量的最后一個(gè)元素。public Object get(int index) 獲取此向量指定位置處的元素。public Object remove(int index) 從此向量中刪除指定位置處的元素,并返回這個(gè)元
9、素。public final int size() 獲取向量所含有的元素的個(gè)數(shù)。public int setSize(int size) 重新設(shè)置向量的大小,若原向量的大小比size大,則放棄后面的元素。public final synchronized Enumeration elements() 獲取一個(gè)枚舉對(duì)象。,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、/加入的為字符串對(duì)象 vector.addElement(integer1); vector.addElement(integer1);//加入的為Integer的對(duì)象 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類舉例,在指定位置插入新對(duì)象,指定位置后的對(duì)象依次往后順延,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、,實(shí)例,接口可以象類一樣實(shí)現(xiàn)多繼承,請(qǐng)分析下面的程序。,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ī)則很容易記住,但真正理解接口更重要。那為什么要用接口呢? 假如轎車、卡車、拖拉機(jī)、摩托車、客車都是機(jī)動(dòng)車的子類,其中機(jī)動(dòng)車是一個(gè)抽象類。如果機(jī)動(dòng)車中有一個(gè)抽象方法 “收取費(fèi)用”,那么所有的子類都要實(shí)現(xiàn)這個(gè)方法,即給出方法體,產(chǎn)生各自的收費(fèi)行為。這顯然不符合人們的思維方法,因?yàn)橥侠瓩C(jī)可能不需要有”收取費(fèi)用”的功能,而其他的一些類,比如飛機(jī)、輪船等可
22、能也需要具體實(shí)現(xiàn)”收取費(fèi)用”。,理解接口,接口可以增加很多類都需要實(shí)現(xiàn)的功能,不同的類可以使用相同的接口,同一個(gè)類也可以實(shí)現(xiàn)多個(gè)接口。接口只關(guān)心功能,并不關(guān)心功能的具體實(shí)現(xiàn),比如”客車類”實(shí)現(xiàn)一個(gè)接口,該接口中有一個(gè)”收取費(fèi)用”的方法,那么這個(gè)”客車類”必須具體給出怎樣收取費(fèi)用的操作,即給出方法的方法體,不同車類都可以實(shí)現(xiàn)”收取費(fèi)用”,但”收取費(fèi)用”的手段可能不相同。接口的思想在于它可以增加很多類都需要實(shí)現(xiàn)的功能,使用相同的接口類不一定
23、有繼承關(guān)系,就象各式各樣的商品,它們可能隸屬不同的公司,工商部門要求都必須具有顯示商標(biāo)的功能。實(shí)現(xiàn)同一接口 ,但商標(biāo)的具體制作由各個(gè)公司自己去實(shí)現(xiàn)。,再比如,你是一個(gè)項(xiàng)目主管,你需要管理許多部門,這些部門要開發(fā)一些軟件所需要的類,你可能要求某個(gè)類實(shí)現(xiàn)一個(gè)接口,也就是說你對(duì)一些類是否具有這個(gè)功能非常關(guān)心,但不關(guān)心功能的具體體現(xiàn),比如這個(gè)功能是speakLove ,但你不關(guān)心是用漢語實(shí)現(xiàn)功能speakLove 或用英語實(shí)現(xiàn)speakLove
24、。在某些時(shí)候,你也許打一個(gè)電話就可以了,告訴遠(yuǎn)方的一個(gè)開發(fā)部門實(shí)現(xiàn)你所規(guī)定的接口,并建議他們用漢語來實(shí)現(xiàn)speakLove。如果沒有這個(gè)接口,你可能要化很多的口舌來讓你的部門找到那個(gè)表達(dá)愛的方法,也許他們給表達(dá)愛的那個(gè)方法起的名字是完全不同的名字。,理解接口,接口使用,接口(interface)就是方法定義和常量值的集合。從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有方法的實(shí)現(xiàn)。 通過接口可以實(shí)現(xiàn)不相關(guān)
25、類的相同行為,而不需要考慮這些類之間的層次關(guān)系。 通過接口可以指明多個(gè)類需要實(shí)現(xiàn)的方法。 通過接口可以了解對(duì)象的交互界面,而不需了解對(duì)象所對(duì)應(yīng)的類。,接口實(shí)例 interface 收費(fèi){ public void 收取費(fèi)用(); } class 公共汽車 implements 收費(fèi){ public void 收取費(fèi)用(){ Sy
26、stem.out.println("公共汽車:一元/張,不計(jì)算公里數(shù)"); } } class 出租車 implements 收費(fèi){ public void 收取費(fèi)用(){ System.out.println("出租車:1.60元/公里,起價(jià)3公里"); } },class
27、 電影院 implements 收費(fèi){ public void 收取費(fèi)用(){ System.out.println("電影院:門票,十元/張"); }}class Example4 { public static void main(String args[]){ 公共汽車 七路=new 公共汽車(); 出租車
28、 天宇=new 出租車(); 電影院 紅星=new 電影院(); 七路.收取費(fèi)用();天宇.收取費(fèi)用(); 紅星.收取費(fèi)用(); }},注:接口聲明時(shí),如果關(guān)鍵字interface 前面加上public 關(guān)鍵字,就稱這樣的接口是一個(gè)public 接口,public 接口可以被任何一個(gè)類使用。如果一個(gè)接口不加public 修飾,就稱做友好接口類,友好接口可以被同一
29、包中的類使用。接口回調(diào)是指可以把實(shí)現(xiàn)某一接口的類創(chuàng)建的對(duì)象的引用賦給該接口聲明的接口變量中。那么該接口變量就可以調(diào)用被類實(shí)現(xiàn)的接口中的方法。實(shí)際上,當(dāng)接口變量調(diào)用被類實(shí)現(xiàn)的接口中的方法時(shí),就是通知相應(yīng)的對(duì)象調(diào)用接口的方法。,接口回調(diào),接口回調(diào)示例,interface ShowMessage{ void 顯示商標(biāo)(String s); } class TV implements ShowM
30、essage{ public void 顯示商標(biāo)(String s){ System.out.println(s); } } class PC implements ShowMessage{ public void 顯示商標(biāo)(String s){ System.out.println(s);
31、 } },接口回調(diào)示例,public class Example5{ public static void main(String args[]) { ShowMessage sm; sm=new TV(); sm.顯示商標(biāo)("長城牌電視機(jī)"); sm=new PC(); sm.顯示商標(biāo)(&q
32、uot;聯(lián)想奔月5008PC機(jī)"); }},第7章小結(jié),包是類和接口的集合,包可以嵌套。類用一個(gè)package語句定義所屬的包。Import語句使包中定義的類和接口可以直接按名引用。包又分為用戶自定義包和系統(tǒng)包。用戶自定義包是由用戶自己定義的,相當(dāng)于文件系統(tǒng)中的文件夾,用來存放用戶定義的類。接口是常量和抽象方法的集合。接口是Java對(duì)多重繼承的解決方法。類實(shí)現(xiàn)接口的方法是把該接口加入implements語句
33、,并且實(shí)現(xiàn)接口及其父接口中的所有抽象方法。Java系統(tǒng)包中大量的類,如:File類、System類、以及Math類和Vector類。,第5章復(fù)習(xí),以下程序的功能是,統(tǒng)計(jì)數(shù)組{56,90,89,23,45,61,60,59}中元素值小于60的個(gè)數(shù),并輸出。請(qǐng)將程序補(bǔ)充完整。注意:請(qǐng)勿改動(dòng)程序已有內(nèi)容,僅在?處填入適當(dāng)?shù)恼Z句。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章復(fù)習(xí),仔細(xì)閱讀程序,完成類Ja
35、va1的定義,并將程序補(bǔ)充完整。注意:請(qǐng)勿改動(dòng)程序已有內(nèi)容,僅在?處填入適當(dāng)?shù)恼Z句。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章復(fù)習(xí),1. 已知有一個(gè)接口A,如下:interface A { int method1(int i); int method2(int j);} 下列哪個(gè)類實(shí)現(xiàn)了接口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.下列有關(guān)接口的描述不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第14講 極值
- 第14講金屬資源的利用和保護(hù)
- 第14講 數(shù)字游戲
- 第14講金屬資源的利用和保護(hù)
- 第14講 極值(學(xué)生版)
- 第4講-接口與內(nèi)部類
- 第14講 函數(shù)的應(yīng)用
- 第14講 培訓(xùn)與發(fā)展
- 第14講 邏輯-數(shù)字推理篇
- 第14講 課后分層訓(xùn)練
- 第14講基因的分離定律
- 第14講函數(shù)概念與表示
- 第14講-研究論文的寫作
- 第14講函數(shù)概念與表示(學(xué)生)
- 第14講大規(guī)模的海水運(yùn)動(dòng)
- 初中數(shù)學(xué)競賽講座(第14講)面積問題
- 第14講 大規(guī)模的海水運(yùn)動(dòng)
- 第14講大規(guī)模的海水運(yùn)動(dòng)
- 第14講dna的分子結(jié)構(gòu)和遺傳信息的傳遞
- 第14講dna的分子結(jié)構(gòu)和遺傳信息的傳遞
評(píng)論
0/150
提交評(píng)論