




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教培行業(yè)社區(qū)談判
- 備考2025年成人學(xué)位英語(yǔ)模擬測(cè)試題及答案解析2
- 河北正定師范高等??茖W(xué)校《網(wǎng)頁(yè)設(shè)計(jì)與制作》2023-2024學(xué)年第二學(xué)期期末試卷
- 張家口職業(yè)技術(shù)學(xué)院《影像解剖學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 閩西職業(yè)技術(shù)學(xué)院《嵌入式系統(tǒng)原理與應(yīng)用技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 溫州職業(yè)技術(shù)學(xué)院《植物分子生物學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶第二師范學(xué)院《建筑材料(安)》2023-2024學(xué)年第二學(xué)期期末試卷
- 預(yù)防關(guān)節(jié)攣縮
- 項(xiàng)目部年終總結(jié)及明年計(jì)劃
- 2024陜西社區(qū)工作者練習(xí)題庫(kù)完美版
- 《情志護(hù)理與養(yǎng)生》課件
- 植保無(wú)人機(jī)飛行作業(yè)服務(wù)應(yīng)急及突發(fā)事件處理方案
- 2019地質(zhì)災(zāi)害深部位移監(jiān)測(cè)技術(shù)規(guī)程
- 《光電對(duì)抗原理與應(yīng)用》課件第3章
- 智慧能源信息化平臺(tái)建設(shè)整體解決方案
- 2024年稅務(wù)系統(tǒng)職業(yè)技能競(jìng)賽試題庫(kù)-社會(huì)保險(xiǎn)費(fèi)管理
- 2024年領(lǐng)導(dǎo)干部政治理論知識(shí)培訓(xùn)考試題庫(kù)及答案(九)
- 企業(yè)行政管理的數(shù)字化趨勢(shì)分析
- 推行注塑生產(chǎn)自動(dòng)化改造計(jì)劃
- GB/T 23444-2024金屬及金屬?gòu)?fù)合材料吊頂板
- 國(guó)家電網(wǎng)公司招聘高校畢業(yè)生應(yīng)聘登記表
評(píng)論
0/150
提交評(píng)論