面向?qū)ο蟪绦蛟O(shè)計(jì)第13講 包和接口(三)_第1頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)第13講 包和接口(三)_第2頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)第13講 包和接口(三)_第3頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)第13講 包和接口(三)_第4頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)第13講 包和接口(三)_第5頁(yè)
已閱讀5頁(yè),還剩20頁(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)介

第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語(yǔ)言提供的一種高級(jí)數(shù)據(jù)結(jié)構(gòu),可用于保存一系列對(duì)象。實(shí)際上,Java并不支持動(dòng)態(tài)數(shù)組,Vector類提供了一種與"動(dòng)態(tài)數(shù)組"相近的功能。如果不能事先確定要保存的對(duì)象的數(shù)目,或是需要方便獲得某個(gè)對(duì)象的存放位置時(shí),可以選擇Vector類。Vector有3個(gè)構(gòu)造方法:publicVector();publicVector(int

initialCapacity);publicVector(int

initialCapacity,int

capacityIncrement);

第一個(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類的構(gòu)造方法publicboolean

add(Object

obj)將對(duì)象obj添加到向量的末尾。publicvoidadd(int

index,Object

obj)將對(duì)象obj插入到向量的指定位置。publicfinalsynchronizedvoidaddElement(Object

obj)將對(duì)象obj插入向量的尾部。對(duì)同一個(gè)向量對(duì)象,可在其中插入不同類的對(duì)象。注意插入的應(yīng)是對(duì)象而不是數(shù)值,所以插入數(shù)值時(shí)要注意將數(shù)值轉(zhuǎn)換成相應(yīng)的對(duì)象。setElementAt(Object

obj,intindex)將index處的對(duì)象替換成obj,原來(lái)的對(duì)象將被覆蓋。publicvoidset(int

index,Object

obj)把指定位置處的元素用對(duì)象obj替換掉。Vector類的常用方法removeElement(Object

obj)從向量中刪除obj對(duì)象。若有存在多個(gè)obj對(duì)象,則刪除第一個(gè)obj對(duì)象,同時(shí)將后面所有對(duì)象前移一位。removeAllElements()刪除向量中所有的對(duì)象。publicfinalsynchronizedvoidremoveElementlAt(intindex)刪除index所指的對(duì)象,并將后面的所有對(duì)象前移一位。publicfinalint

indexOf(Object

obj)從向量頭開(kāi)始搜索obj,返回所遇到的第一個(gè)obj對(duì)應(yīng)的下標(biāo),若不存在此obj,返回-1。Vector類的常用方法(續(xù))publicfinalint

indexOf(Object

obj,intindex)

從指定位置查找對(duì)象obj在此向量中首次出現(xiàn)的位置。publicfinalint

lastIndexOf(Object

obj)從向量尾部開(kāi)始逆向搜索obj,返回對(duì)象obj最后一次出現(xiàn)的下標(biāo),若不存在此obj,返回-1。publicint

lastIndexOf(Object

obj,intindex)對(duì)象obj在位置index之前最后一次出現(xiàn)的位置。publicObjectfirstElement()獲取此向量的第一個(gè)元素。Vector類的常用方法(續(xù))publicObjectlastElement()獲取此向量的最后一個(gè)元素。publicObjectget(intindex)獲取此向量指定位置處的元素。publicObjectremove(intindex)從此向量中刪除指定位置處的元素,并返回這個(gè)元素。publicfinalint

size()獲取向量所含有的元素的個(gè)數(shù)。publicint

setSize(intsize)重新設(shè)置向量的大小,若原向量的大小比size大,則放棄后面的元素。publicfinalsynchronizedEnumeration

elements()獲取一個(gè)枚舉對(duì)象。Vector類的常用方法(續(xù))importjava.util.Vector;importjava.util.Enumeration;publicclassEx7_12{publicstaticvoidmain(String[]args){Vectorvector=newVector();Integerinteger1=newInteger(1);

vector.addElement("one");//加入的為字符串對(duì)象

vector.addElement(integer1);vector.addElement(integer1);//加入的為Integer的對(duì)象

vector.addElement("two");

vector.addElement(newInteger(2));vector.addElement(integer1);vector.addElement(integer1);

System.out.println("Thefirstvectoris:"+vector);vector.insertElementAt("three",2);

vector.insertElementAt(newFloat(3.14),3);Vector類舉例在指定位置插入新對(duì)象,指定位置后的對(duì)象依次往后順延

System.out.println("Thesecondvectoris:"+vector);vector.setElementAt("four",2);

System.out.println("Thethirdvectoris:"+vector);vector.removeElement(integer1);

Enumeration

enum=vector.elements(); //枚舉接口

System.out.print("Thefourvectoris:");

while(enum.hasMoreElements())

System.out.print(enum.nextElement()+"");

System.out.println();

System.out.println("Thefirstpositionofobject1:"+vector.indexOf(integer1));

System.out.println("Thelastpositionofobject1:"+vector.lastIndexOf(integer1));vector.setSize(4);

System.out.println("Thenewvectoris:"+vector);}}Vector類舉例(續(xù))實(shí)例接口可以象類一樣實(shí)現(xiàn)多繼承,請(qǐng)分析下面的程序。publicclassEx7_13{publicstaticvoidt(CanFightx){

x.fight();}publicstaticvoidu(CanSwimx){

x.swim();}publicstaticvoidv(CanFlyx){

x.fly();}publicstaticvoid

w(ActionCharacterx){

x.fight(); }publicstaticvoidmain(String

args[]){Heroh=newHero();

t(h);u(h);

v(h);w(h);}}packageno12.ex7;interfaceCanFight{voidfight();}interfaceCanSwim{voidswim();}interfaceCanFly{voidfly();}classActionCharacter{publicvoidfight(){

System.out.println("canfight!");}}classHeroextendsActionCharacterimplementsCanFight,CanSwim,CanFly{publicvoidswim(){

System.out.println("canswim");}publicvoidfly(){

System.out.println("canfly");}}理解接口 接口的語(yǔ)法規(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ī)、輪船等可能也需要具體實(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)的功能,使用相同的接口類不一定有繼承關(guān)系,就象各式各樣的商品,它們可能隸屬不同的公司,工商部門要求都必須具有顯示商標(biāo)的功能。實(shí)現(xiàn)同一接口,但商標(biāo)的具體制作由各個(gè)公司自己去實(shí)現(xiàn)。 再比如,你是一個(gè)項(xiàng)目主管,你需要管理許多部門,這些部門要開(kāi)發(fā)一些軟件所需要的類,你可能要求某個(gè)類實(shí)現(xiàn)一個(gè)接口,也就是說(shuō)你對(duì)一些類是否具有這個(gè)功能非常關(guān)心,但不關(guān)心功能的具體體現(xiàn),比如這個(gè)功能是speakLove

,但你不關(guān)心是用漢語(yǔ)實(shí)現(xiàn)功能speakLove

或用英語(yǔ)實(shí)現(xiàn)speakLove。在某些時(shí)候,你也許打一個(gè)電話就可以了,告訴遠(yuǎn)方的一個(gè)開(kāi)發(fā)部門實(shí)現(xiàn)你所規(guī)定的接口,并建議他們用漢語(yǔ)來(lái)實(shí)現(xiàn)speakLove。如果沒(méi)有這個(gè)接口,你可能要化很多的口舌來(lái)讓你的部門找到那個(gè)表達(dá)愛(ài)的方法,也許他們給表達(dá)愛(ài)的那個(gè)方法起的名字是完全不同的名字。理解接口接口使用

接口(interface)就是方法定義和常量值的集合。從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒(méi)有方法的實(shí)現(xiàn)。通過(guò)接口可以實(shí)現(xiàn)不相關(guān)類的相同行為,而不需要考慮這些類之間的層次關(guān)系。通過(guò)接口可以指明多個(gè)類需要實(shí)現(xiàn)的方法。通過(guò)接口可以了解對(duì)象的交互界面,而不需了解對(duì)象所對(duì)應(yīng)的類。接口實(shí)例

interface收費(fèi){publicvoid收取費(fèi)用();}class公共汽車implements收費(fèi){publicvoid收取費(fèi)用(){

System.out.println("公共汽車:一元/張,不計(jì)算公里數(shù)");}}class出租車implements收費(fèi){publicvoid收取費(fèi)用(){

System.out.println("出租車:1.60元/公里,起價(jià)3公里");}}class電影院implements收費(fèi){publicvoid收取費(fèi)用(){

System.out.println("電影院:門票,十元/張");}}classExample4{publicstaticvoidmain(String

args[]){

公共汽車七路=new公共汽車();

出租車天宇=new出租車();

電影院紅星=new電影院();

七路.收取費(fèi)用();天宇.收取費(fèi)用();

紅星.收取費(fèi)用();}}注:接口聲明時(shí),如果關(guān)鍵字interface前面加上public關(guān)鍵字,就稱這樣的接口是一個(gè)public接口,public接口可以被任何一個(gè)類使用。如果一個(gè)接口不加public修飾,就稱做友好接口類,友好接口可以被同一包中的類使用。接口回調(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)示例

interfaceShowMessage{void顯示商標(biāo)(Strings);}classTVimplementsShowMessage{publicvoid顯示商標(biāo)(Strings){

System.out.println(s);}}classPCimplementsShowMessage{publicvoid顯示商標(biāo)(Strings){

System.out.println(s);}}接口回調(diào)示例publicclassExample5{publicstaticvoidmain(String

args[]){

ShowMessage

sm;

sm=newTV();sm.顯示商標(biāo)("長(zhǎng)城牌電視機(jī)");

sm=newPC();sm.顯示商標(biāo)("聯(lián)想奔月5008PC機(jī)");}}第7章小結(jié)包是類和接口的集合,包可以嵌套。類用一個(gè)package語(yǔ)句定義所屬的包。Import語(yǔ)句使包中定義的類和接口可以直接按名引用。包又分為用戶自定義包和系統(tǒng)包。用戶自定義包是由用戶自己定義的,相當(dāng)于文件系統(tǒng)中的文件夾,用來(lái)存放用戶定義的類。接口是常量和抽象方法的集合。接口是Java對(duì)多重繼承的解決方法。類實(shí)現(xiàn)接口的方法是把該接口加入implements語(yǔ)句,并且實(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(yǔ)句。publicclassJava1{ publicstaticvoidmain(String[]args){

intscore[]={56,90,89,23,45,61,60,59};

intnum=0;

int

len=score.?;

inti=0;

while(i<?){

if(?<60)

num++;

?;

System.out.println("<60:"+num); }}第6章復(fù)習(xí)仔細(xì)閱讀程序,完成類Java1的定義,并將程序補(bǔ)充完整。注意:請(qǐng)勿改動(dòng)程序已有內(nèi)容,僅在?處填入適當(dāng)?shù)恼Z(yǔ)句。publicclassJava1{

intnum1; doublenum2;

publicJava1(?)

{ num1=a; num2=b;

} publicstaticvoidmain(String[]args){

inta=23; doubleb=4.5;

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論