版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
§4-3使用接口實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)Java面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)目標(biāo)任務(wù)分析
在學(xué)生信息管理系統(tǒng)中,除定義表示學(xué)生實(shí)體的類(實(shí)體類)之外,還需要定義各種完成系統(tǒng)功能的類(業(yè)務(wù)處理類),本任務(wù)的業(yè)務(wù)處理類中必須完成學(xué)生信息的增、刪、改、查等基本操作,但不同實(shí)體實(shí)現(xiàn)業(yè)務(wù)的方式又各不相同,為了保證這些基本功能的實(shí)現(xiàn),通常先定義一組約束或規(guī)范,約定好必須要實(shí)現(xiàn)的功能,Java中的接口便可以實(shí)現(xiàn)這一功能。教學(xué)內(nèi)容1抽實(shí)現(xiàn)接口定義21Java多態(tài)一、接口定義接口是由一些抽象方法和常量所組成的一個(gè)集合。它的定義與抽象類類似,只定義了類中方法的原型,而沒有直接定義方法的內(nèi)容。其定義格式為:
[public]interface接口名[extends接口1,接口2,......]{
類型標(biāo)識(shí)符常量名1=常數(shù);
類型標(biāo)識(shí)符常量名2=常數(shù);
......
類型標(biāo)識(shí)符常量名n=常數(shù);
返回值類型方法1(參數(shù)列表);
返回值類型方法2(參數(shù)列表);
......
返回值類型方法n(參數(shù)列表);
}一、接口定義接口中定義的常量默認(rèn)使用了“publicstaticfinal”進(jìn)行修飾,即為靜態(tài)常量;方法都默認(rèn)使用了“publicabstract”進(jìn)行修飾,即為抽象方法。接口也不能用來實(shí)例化對(duì)象,它不是一個(gè)類。例如:
interfaceCallback{
floatPI=3.14159;
voidcallback(floatparam);
}二、接口實(shí)現(xiàn)一個(gè)或多個(gè)類可以實(shí)現(xiàn)該接口。Java中使用關(guān)鍵字implements實(shí)現(xiàn)接口,接口實(shí)現(xiàn)一般格式如下:
[public]class類名[extends父類名稱][implements接口名列表]
{類體
}說明:1)如果一個(gè)類實(shí)現(xiàn)多個(gè)接口,這些接口名之間用逗號(hào)分隔。2)當(dāng)一個(gè)類實(shí)現(xiàn)某個(gè)接口時(shí),必須實(shí)現(xiàn)接口中的所有方法,且方法必須聲明為public;如果不能實(shí)現(xiàn),也必須寫出一個(gè)空方法。而且,實(shí)現(xiàn)方法的類型必須嚴(yán)格與接口定義中指定的類型相匹配。3)允許多個(gè)類實(shí)現(xiàn)同一接口。二、接口實(shí)現(xiàn)例如,實(shí)現(xiàn)Callback接口的類Area的定義。
classAreaimplementsCallback{
publicvoidcallback(floatr){
System.out.println("半徑為"+r+"圓的面積是:"+PI*r*r);
}
}注意:callback(
)必須用public修飾符聲明。二、接口實(shí)現(xiàn)【例4-9】根據(jù)用戶要求在控制臺(tái)打印不同的圖形。interfaceShape{//定義接口voiddraw();}classCircleimplementsShape{voiddraw(){System.out.println("drawCircle.");}}classSquareimplementsShape{voiddraw(){System.out.println("drawSquare.");}}classTriangleimplementsShape{voiddraw(){System.out.println("drawTriangle.");}}classTestShape{publicstaticvoidmain(String[]args){drawShape(newCircle());
drawShape(newSquare());
drawShape(newTriangle());
}staticvoiddrawShape(Shapes){//s可以是實(shí)現(xiàn)Shape接口的任何類的對(duì)象
s.draw();
}}三、Java多態(tài)性封裝是把客觀事物封裝成抽象的類,并且類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對(duì)象操作,對(duì)不可信的進(jìn)行信息隱藏。類中成員的屬性有:public,protected,(default),private,這四個(gè)屬性的訪問權(quán)限依次降低。
封裝可以隱藏實(shí)現(xiàn)細(xì)節(jié),實(shí)現(xiàn)了代碼模塊化。繼承是指這樣一種能力,它可以使用現(xiàn)有類的所有功能,并在無(wú)需重新編寫原來類的情況下對(duì)這些功能進(jìn)行擴(kuò)展。
繼承實(shí)現(xiàn)了代碼重用,提高了代碼編寫效率。封裝、繼承、多態(tài)是Java面向?qū)ο缶幊痰娜筇卣?,也稱為三大基石。三、Java多態(tài)性多態(tài)是指不同對(duì)象在調(diào)用同一個(gè)方法時(shí),表現(xiàn)出的多種不同形態(tài)。利用多態(tài)可以使程序具有良好的可維護(hù)性和可擴(kuò)展性。Java中的多態(tài)有兩種。
1)編譯時(shí)多態(tài):方法的重載。
2)運(yùn)行時(shí)多態(tài):Java運(yùn)行時(shí)系統(tǒng)根據(jù)調(diào)用該方法的對(duì)象類型來決定選擇調(diào)用哪個(gè)方法。多態(tài)實(shí)現(xiàn)有三個(gè)必要條件。一要有繼承,二要有重寫,三是父類引用指向子類對(duì)象封裝、繼承、多態(tài)是Java面向?qū)ο缶幊痰娜筇卣?,也稱為三大基石。三、Java多態(tài)性【例4-10】多態(tài)性應(yīng)用示例,對(duì)各類水果味道的描述。publicabstractclassFruit{ //抽象類,父類——水果
Stringfname;
publicFruit(Stringfname){ super(); this.fname=fname;
}
publicabstractvoidshowTaste();//抽象方法,描述水果味道}publicclassOrangeextendsFruit{ //子類——橙子類
publicOrange(Stringfname){ super(fname);
}
publicvoidshowTaste(){ System.out.println("酸甜可口!");
}}publicclassAppleextendsFruit{ //子類——蘋果類
publicApple(Stringfname){ super(fname);
}
publicvoidshowTaste(){ System.out.println("非常甜!");
}}publicclassChild{ //孩子類
Stringname;
publicChild(Stringname){ super(); =name;
}
publicvoideat(Fruitfruit){ //父類對(duì)象作為形參
//參數(shù)是父類型“水果”類型,該父類及其子類的對(duì)象都可以作為實(shí)參傳入 System.out.print(+"今天吃了一個(gè)"+fruit.fname+","); fruit.showTaste();
}}三、Java多態(tài)性【例4-10】多態(tài)性應(yīng)用示例,對(duì)各類水果味道的描述。publicclassTestFruit{ //主類(測(cè)試類)
publicstaticvoidmain(String[]args){ Childchild1=newChild("小明"); Childchild2=newChild("小紅"); child1.eat(newApple("蘋果")); //子類對(duì)象作為實(shí)參 child2.eat(newOrange("橙子"));
//子類對(duì)象作為實(shí)參
//實(shí)現(xiàn)動(dòng)態(tài)綁定,在執(zhí)行期間判斷所引用對(duì)象的實(shí)際類型,根據(jù)其實(shí)際的類型調(diào)用其相應(yīng)的方法
}}程序說明:1)程序中使用了一個(gè)實(shí)現(xiàn)多態(tài)的關(guān)鍵手段:“將子類的引用賦給父類對(duì)象(向上轉(zhuǎn)型)”也稱為“父類引用指向子類對(duì)象”。相當(dāng)于:Fruitapple=newApple();聲明的是父類類型,創(chuàng)建的是子類對(duì)象。2)該程序具有較強(qiáng)的可擴(kuò)展性。如:若在程序中再增加一種水果——桃子,現(xiàn)在已有代碼不需要做任何改動(dòng),只需要添加一個(gè)“桃子”子類,就可以完成。這就是多態(tài)的最大優(yōu)勢(shì)。任務(wù)實(shí)施學(xué)生信息管理系統(tǒng)中,為了實(shí)現(xiàn)學(xué)生信息的“增、刪、改、查”這些基本功能,首先定義了一個(gè)接口StudentDao,在其中規(guī)定了實(shí)現(xiàn)接口的類必須實(shí)現(xiàn)的功能。publicinterfaceStudentDao{
publicUserlogin(Stringuname,String
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版電力工程設(shè)計(jì)咨詢合同2篇
- 二零二五年度高新技術(shù)企業(yè)承包商擔(dān)保合同3篇
- 二零二五版戶外用品促銷員活動(dòng)策劃合同2篇
- 二零二五年度酒店前臺(tái)正規(guī)雇傭合同范本(含勞動(dòng)合同變更及續(xù)簽規(guī)則)3篇
- 二零二五版港口安全評(píng)價(jià)與安全管理合同3篇
- 二零二五版環(huán)保工程保險(xiǎn)合同3篇
- 二零二五版外資企業(yè)往來借款稅務(wù)籌劃合同3篇
- 二零二五年財(cái)務(wù)顧問企業(yè)財(cái)務(wù)管理咨詢合同3篇
- 二零二五版智能家居產(chǎn)品銷售安裝合同2篇
- 二零二五年度鋼筋行業(yè)購(gòu)銷合同規(guī)范范本5篇
- 不同茶葉的沖泡方法
- 光伏發(fā)電并網(wǎng)申辦具體流程
- 基本藥物制度政策培訓(xùn)課件
- 2025年中國(guó)華能集團(tuán)限公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 建筑勞務(wù)專業(yè)分包合同范本(2025年)
- GB/T 45002-2024水泥膠砂保水率測(cè)定方法
- 廣東省廣州海珠區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試卷(含答案)
- 飛行原理(第二版) 課件 第10章 高速空氣動(dòng)力學(xué)基礎(chǔ)
- 廣西《乳腺X射線數(shù)字化體層攝影診療技術(shù)操作規(guī)范》
- 山西省2024年中考道德與法治真題試卷(含答案)
- 五年(2020-2024)高考地理真題分類匯編(全國(guó)版)專題12區(qū)域發(fā)展解析版
評(píng)論
0/150
提交評(píng)論