2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩24頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1/,第13講 包和接口(三),,上講回顧,接口的定義和實(shí)現(xiàn)Collection接口抽象類(lèi)及其應(yīng)用類(lèi)File 、String、 StringBuffer中常用方法掌握System類(lèi)的常用方法會(huì)使用Math類(lèi)的常用方法會(huì)使用Random類(lèi)的常用方法,本講教學(xué)目標(biāo),理解Vector類(lèi)及其常用方法理解接口5、6、7章習(xí)題,Vector類(lèi),Vector類(lèi)是Java語(yǔ)言提供的一種高級(jí)數(shù)據(jù)結(jié)構(gòu),可用于保存一系列對(duì)象。實(shí)際上,Java

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

3、); 第一個(gè)構(gòu)造方法既不指定初始的存儲(chǔ)容量,也不規(guī)定增長(zhǎng)的增量,只是創(chuàng)建一個(gè)空的向量。 第二個(gè)構(gòu)造方法創(chuàng)建一個(gè)具有initialCapacity個(gè)元素空間的向量,但沒(méi)有指定增長(zhǎng)的增量。 第三個(gè)構(gòu)造方法在創(chuàng)建Vector對(duì)象時(shí)指定了初始的存儲(chǔ)容量initialCapacity的向量,并且當(dāng)向量需要增長(zhǎng)以向里面追加元素時(shí),一次性增加capacityIncrement個(gè)元素。,Vector類(lèi)的構(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ì)象,可在其中插入不同類(lèi)的對(duì)象。注意插入的應(yīng)是對(duì)象而不是數(shù)值,所以插入數(shù)值時(shí)要注意將數(shù)值轉(zhuǎn)換成相應(yīng)的對(duì)

5、象。 setElementAt(Object obj, int index) 將index處的對(duì)象替換成obj,原來(lái)的對(duì)象將被覆蓋。public void set(int index,Object obj) 把指定位置處的元素用對(duì)象obj替換掉。,Vector類(lèi)的常用方法,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) 從向量頭開(kāi)始搜索obj ,返回所遇到的第一個(gè)obj對(duì)應(yīng)的下標(biāo),若不存在此obj,返回-1。,Vector類(lèi)的常用方法(續(xù)),

7、public final int indexOf(Object obj,int index) 從指定位置查找對(duì)象obj在此向量中首次出現(xiàn)的位置。public final int lastIndexOf(Object obj) 從向量尾部開(kāi)始逆向搜索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類(lèi)的常用方法(續(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類(lèi)的常用方法(續(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類(lèi)舉例,在指定位置插入新對(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類(lèi)舉例(續(xù))

17、,實(shí)例,接口可以象類(lèi)一樣實(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"); } },理解接口,接口的語(yǔ)法規(guī)則很容易記住,但真正理解接口更重要。那為什么要用接口呢? 假如轎車(chē)、卡車(chē)、拖拉機(jī)、摩托車(chē)、客車(chē)都是機(jī)動(dòng)車(chē)的子類(lèi),其中機(jī)動(dòng)車(chē)是一個(gè)抽象類(lèi)。如果機(jī)動(dòng)車(chē)中有一個(gè)抽象方法 “收取費(fèi)用”,那么所有的子類(lèi)都要實(shí)現(xiàn)這個(gè)方法,即給出方法體,產(chǎn)生各自的收費(fèi)行為。這顯然不符合人們的思維方法,因?yàn)橥侠瓩C(jī)可能不需要有”收取費(fèi)用”的功能,而其他的一些類(lèi),比如飛機(jī)、輪船等可

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

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

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

25、類(lèi)的相同行為,而不需要考慮這些類(lèi)之間的層次關(guān)系。 通過(guò)接口可以指明多個(gè)類(lèi)需要實(shí)現(xiàn)的方法。 通過(guò)接口可以了解對(duì)象的交互界面,而不需了解對(duì)象所對(duì)應(yīng)的類(lèi)。,接口實(shí)例 interface 收費(fèi){ public void 收取費(fèi)用(); } class 公共汽車(chē) implements 收費(fèi){ public void 收取費(fèi)用(){ Sy

26、stem.out.println("公共汽車(chē):一元/張,不計(jì)算公里數(shù)"); } } class 出租車(chē) implements 收費(fèi){ public void 收取費(fèi)用(){ System.out.println("出租車(chē):1.60元/公里,起價(jià)3公里"); } },class

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

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

29、包中的類(lèi)使用。接口回調(diào)是指可以把實(shí)現(xiàn)某一接口的類(lèi)創(chuàng)建的對(duì)象的引用賦給該接口聲明的接口變量中。那么該接口變量就可以調(diào)用被類(lèi)實(shí)現(xiàn)的接口中的方法。實(shí)際上,當(dāng)接口變量調(diào)用被類(lèi)實(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)("長(zhǎng)城牌電視機(jī)"); sm=new PC(); sm.顯示商標(biāo)(&q

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

33、,并且實(shí)現(xiàn)接口及其父接口中的所有抽象方法。Java系統(tǒng)包中大量的類(lèi),如:File類(lèi)、System類(lèi)、以及Math類(lèi)和Vector類(lèi)。,第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(yǔ)句。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ì)閱讀程序,完成類(lèi)Ja

35、va1的定義,并將程序補(bǔ)充完整。注意:請(qǐng)勿改動(dòng)程序已有內(nèi)容,僅在?處填入適當(dāng)?shù)恼Z(yǔ)句。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è)類(lèi)實(shí)現(xiàn)了接口A,并且該類(lèi)不是抽象類(lèi)?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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論