![面向?qū)ο蟪绦蛟O(shè)計第13講 包和接口(三)_第1頁](http://file4.renrendoc.com/view7/M00/39/1E/wKhkGWa8qYeABnDiAAD_TwSCBmk317.jpg)
![面向?qū)ο蟪绦蛟O(shè)計第13講 包和接口(三)_第2頁](http://file4.renrendoc.com/view7/M00/39/1E/wKhkGWa8qYeABnDiAAD_TwSCBmk3172.jpg)
![面向?qū)ο蟪绦蛟O(shè)計第13講 包和接口(三)_第3頁](http://file4.renrendoc.com/view7/M00/39/1E/wKhkGWa8qYeABnDiAAD_TwSCBmk3173.jpg)
![面向?qū)ο蟪绦蛟O(shè)計第13講 包和接口(三)_第4頁](http://file4.renrendoc.com/view7/M00/39/1E/wKhkGWa8qYeABnDiAAD_TwSCBmk3174.jpg)
![面向?qū)ο蟪绦蛟O(shè)計第13講 包和接口(三)_第5頁](http://file4.renrendoc.com/view7/M00/39/1E/wKhkGWa8qYeABnDiAAD_TwSCBmk3175.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第13講包和接口(三)/上講回顧接口的定義和實現(xiàn)Collection接口抽象類及其應(yīng)用類File、String、StringBuffer中常用方法掌握System類的常用方法會使用Math類的常用方法會使用Random類的常用方法本講教學(xué)目標(biāo)理解Vector類及其常用方法理解接口5、6、7章習(xí)題Vector類Vector類是Java語言提供的一種高級數(shù)據(jù)結(jié)構(gòu),可用于保存一系列對象。實際上,Java并不支持動態(tài)數(shù)組,Vector類提供了一種與"動態(tài)數(shù)組"相近的功能。如果不能事先確定要保存的對象的數(shù)目,或是需要方便獲得某個對象的存放位置時,可以選擇Vector類。Vector有3個構(gòu)造方法:publicVector();publicVector(int
initialCapacity);publicVector(int
initialCapacity,int
capacityIncrement);
第一個構(gòu)造方法既不指定初始的存儲容量,也不規(guī)定增長的增量,只是創(chuàng)建一個空的向量。第二個構(gòu)造方法創(chuàng)建一個具有initialCapacity個元素空間的向量,但沒有指定增長的增量。第三個構(gòu)造方法在創(chuàng)建Vector對象時指定了初始的存儲容量initialCapacity的向量,并且當(dāng)向量需要增長以向里面追加元素時,一次性增加capacityIncrement個元素。Vector類的構(gòu)造方法publicboolean
add(Object
obj)將對象obj添加到向量的末尾。publicvoidadd(int
index,Object
obj)將對象obj插入到向量的指定位置。publicfinalsynchronizedvoidaddElement(Object
obj)將對象obj插入向量的尾部。對同一個向量對象,可在其中插入不同類的對象。注意插入的應(yīng)是對象而不是數(shù)值,所以插入數(shù)值時要注意將數(shù)值轉(zhuǎn)換成相應(yīng)的對象。setElementAt(Object
obj,intindex)將index處的對象替換成obj,原來的對象將被覆蓋。publicvoidset(int
index,Object
obj)把指定位置處的元素用對象obj替換掉。Vector類的常用方法removeElement(Object
obj)從向量中刪除obj對象。若有存在多個obj對象,則刪除第一個obj對象,同時將后面所有對象前移一位。removeAllElements()刪除向量中所有的對象。publicfinalsynchronizedvoidremoveElementlAt(intindex)刪除index所指的對象,并將后面的所有對象前移一位。publicfinalint
indexOf(Object
obj)從向量頭開始搜索obj,返回所遇到的第一個obj對應(yīng)的下標(biāo),若不存在此obj,返回-1。Vector類的常用方法(續(xù))publicfinalint
indexOf(Object
obj,intindex)
從指定位置查找對象obj在此向量中首次出現(xiàn)的位置。publicfinalint
lastIndexOf(Object
obj)從向量尾部開始逆向搜索obj,返回對象obj最后一次出現(xiàn)的下標(biāo),若不存在此obj,返回-1。publicint
lastIndexOf(Object
obj,intindex)對象obj在位置index之前最后一次出現(xiàn)的位置。publicObjectfirstElement()獲取此向量的第一個元素。Vector類的常用方法(續(xù))publicObjectlastElement()獲取此向量的最后一個元素。publicObjectget(intindex)獲取此向量指定位置處的元素。publicObjectremove(intindex)從此向量中刪除指定位置處的元素,并返回這個元素。publicfinalint
size()獲取向量所含有的元素的個數(shù)。publicint
setSize(intsize)重新設(shè)置向量的大小,若原向量的大小比size大,則放棄后面的元素。publicfinalsynchronizedEnumeration
elements()獲取一個枚舉對象。Vector類的常用方法(續(xù))importjava.util.Vector;importjava.util.Enumeration;publicclassEx7_12{publicstaticvoidmain(String[]args){Vectorvector=newVector();Integerinteger1=newInteger(1);
vector.addElement("one");//加入的為字符串對象
vector.addElement(integer1);vector.addElement(integer1);//加入的為Integer的對象
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類舉例在指定位置插入新對象,指定位置后的對象依次往后順延
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ù))實例接口可以象類一樣實現(xiàn)多繼承,請分析下面的程序。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");}}理解接口 接口的語法規(guī)則很容易記住,但真正理解接口更重要。那為什么要用接口呢?假如轎車、卡車、拖拉機(jī)、摩托車、客車都是機(jī)動車的子類,其中機(jī)動車是一個抽象類。如果機(jī)動車中有一個抽象方法“收取費(fèi)用”,那么所有的子類都要實現(xiàn)這個方法,即給出方法體,產(chǎn)生各自的收費(fèi)行為。這顯然不符合人們的思維方法,因為拖拉機(jī)可能不需要有”收取費(fèi)用”的功能,而其他的一些類,比如飛機(jī)、輪船等可能也需要具體實現(xiàn)”收取費(fèi)用”。理解接口 接口可以增加很多類都需要實現(xiàn)的功能,不同的類可以使用相同的接口,同一個類也可以實現(xiàn)多個接口。接口只關(guān)心功能,并不關(guān)心功能的具體實現(xiàn),比如”客車類”實現(xiàn)一個接口,該接口中有一個”收取費(fèi)用”的方法,那么這個”客車類”必須具體給出怎樣收取費(fèi)用的操作,即給出方法的方法體,不同車類都可以實現(xiàn)”收取費(fèi)用”,但”收取費(fèi)用”的手段可能不相同。接口的思想在于它可以增加很多類都需要實現(xiàn)的功能,使用相同的接口類不一定有繼承關(guān)系,就象各式各樣的商品,它們可能隸屬不同的公司,工商部門要求都必須具有顯示商標(biāo)的功能。實現(xiàn)同一接口,但商標(biāo)的具體制作由各個公司自己去實現(xiàn)。 再比如,你是一個項目主管,你需要管理許多部門,這些部門要開發(fā)一些軟件所需要的類,你可能要求某個類實現(xiàn)一個接口,也就是說你對一些類是否具有這個功能非常關(guān)心,但不關(guān)心功能的具體體現(xiàn),比如這個功能是speakLove
,但你不關(guān)心是用漢語實現(xiàn)功能speakLove
或用英語實現(xiàn)speakLove。在某些時候,你也許打一個電話就可以了,告訴遠(yuǎn)方的一個開發(fā)部門實現(xiàn)你所規(guī)定的接口,并建議他們用漢語來實現(xiàn)speakLove。如果沒有這個接口,你可能要化很多的口舌來讓你的部門找到那個表達(dá)愛的方法,也許他們給表達(dá)愛的那個方法起的名字是完全不同的名字。理解接口接口使用
接口(interface)就是方法定義和常量值的集合。從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有方法的實現(xiàn)。通過接口可以實現(xiàn)不相關(guān)類的相同行為,而不需要考慮這些類之間的層次關(guān)系。通過接口可以指明多個類需要實現(xiàn)的方法。通過接口可以了解對象的交互界面,而不需了解對象所對應(yīng)的類。接口實例
interface收費(fèi){publicvoid收取費(fèi)用();}class公共汽車implements收費(fèi){publicvoid收取費(fèi)用(){
System.out.println("公共汽車:一元/張,不計算公里數(shù)");}}class出租車implements收費(fèi){publicvoid收取費(fèi)用(){
System.out.println("出租車:1.60元/公里,起價3公里");}}class電影院implements收費(fèi){publicvoid收取費(fèi)用(){
System.out.println("電影院:門票,十元/張");}}classExample4{publicstaticvoidmain(String
args[]){
公共汽車七路=new公共汽車();
出租車天宇=new出租車();
電影院紅星=new電影院();
七路.收取費(fèi)用();天宇.收取費(fèi)用();
紅星.收取費(fèi)用();}}注:接口聲明時,如果關(guān)鍵字interface前面加上public關(guān)鍵字,就稱這樣的接口是一個public接口,public接口可以被任何一個類使用。如果一個接口不加public修飾,就稱做友好接口類,友好接口可以被同一包中的類使用。接口回調(diào)是指可以把實現(xiàn)某一接口的類創(chuàng)建的對象的引用賦給該接口聲明的接口變量中。那么該接口變量就可以調(diào)用被類實現(xiàn)的接口中的方法。實際上,當(dāng)接口變量調(diào)用被類實現(xiàn)的接口中的方法時,就是通知相應(yīng)的對象調(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)("長城牌電視機(jī)");
sm=newPC();sm.顯示商標(biāo)("聯(lián)想奔月5008PC機(jī)");}}第7章小結(jié)包是類和接口的集合,包可以嵌套。類用一個package語句定義所屬的包。Import語句使包中定義的類和接口可以直接按名引用。包又分為用戶自定義包和系統(tǒng)包。用戶自定義包是由用戶自己定義的,相當(dāng)于文件系統(tǒng)中的文件夾,用來存放用戶定義的類。接口是常量和抽象方法的集合。接口是Java對多重繼承的解決方法。類實現(xiàn)接口的方法是把該接口加入implements語句,并且實現(xiàn)接口及其父接口中的所有抽象方法。Java系統(tǒng)包中大量的類,如:File類、System類、以及Math類和Vector類。第5章復(fù)習(xí)以下程序的功能是,統(tǒng)計數(shù)組{56,90,89,23,45,61,60,59}中元素值小于60的個數(shù),并輸出。請將程序補(bǔ)充完整。注意:請勿改動程序已有內(nèi)容,僅在?處填入適當(dāng)?shù)恼Z句。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ǔ)充完整。注意:請勿改動程序已有內(nèi)容,僅在?處填入適當(dāng)?shù)恼Z句。publicclassJava1{
intnum1; doublenum2;
publicJava1(?)
{ num1=a; num2=b;
} publicstaticvoidmain(String[]args){
inta=23; doubleb=4.5;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源汽車充電樁建設(shè)項目投資合同
- 2024年智能農(nóng)業(yè)技術(shù)應(yīng)用研發(fā)投資合同
- 高爾夫球場建設(shè)項目承包合同
- 2025年花粉口服液項目可行性研究報告
- 清潔洗劑項目可行性研究報告
- 2025年P(guān)EVA薄膜項目可行性研究報告
- 年產(chǎn)5000噸包裝材料生產(chǎn)可行性研究報告申請建議書
- 2025年冰箱空調(diào)保護(hù)器項目可行性研究報告
- 2025年保鮮柜項目可行性研究報告
- 消防維保服務(wù)方案及實施細(xì)則
- 保衛(wèi)管理員培訓(xùn)課件
- 香港朗文4B單詞及句子
- 數(shù)據(jù)中心運(yùn)維方案
- 小龍蝦啤酒音樂節(jié)活動策劃方案課件
- 運(yùn)動技能學(xué)習(xí)與控制課件第五章運(yùn)動中的中樞控制
- 財務(wù)部規(guī)范化管理 流程圖
- 蘇教版2023年小學(xué)四年級數(shù)學(xué)下冊教學(xué)計劃+教學(xué)進(jìn)度表
- 斷絕關(guān)系協(xié)議書范文參考(5篇)
- 量子力學(xué)課件1-2章-波函數(shù)-定態(tài)薛定諤方程
- 最新變態(tài)心理學(xué)課件
評論
0/150
提交評論