




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9章實(shí)現(xiàn)抽象圖形
——接口與包能力目標(biāo):理解關(guān)鍵字abstract,能編寫(xiě)抽象方法和抽象類;理解關(guān)鍵字interface及接口類型,學(xué)會(huì)定義并實(shí)現(xiàn)接口;理解關(guān)鍵字package、import及包的作用,能定義和引入包;能在一個(gè)包中定義含面積和周長(zhǎng)方法的圖形接口,在另一個(gè)包中編寫(xiě)實(shí)現(xiàn)圖形接口的圓類和半圓類,在第三個(gè)包中編寫(xiě)實(shí)現(xiàn)圖形接口的正方形類和正方體類。內(nèi)容介紹9.1任務(wù)預(yù)覽9.2抽象方法與抽象類9.3接口類型9.4接口多重繼承與實(shí)現(xiàn)9.5包9.6本章小結(jié)9.7實(shí)訓(xùn)9:實(shí)現(xiàn)圖形接口9.1任務(wù)預(yù)覽本章實(shí)訓(xùn)程序運(yùn)行結(jié)果:
9.2抽象方法與抽象類
9.2.1抽象方法與抽象類
在類中聲明抽象方法的語(yǔ)法形式:可選public等abstract返回類型方法名(可選參數(shù)表);包含抽象方法的類,無(wú)法實(shí)例化,即不能構(gòu)建對(duì)象,是抽象類。抽象類也用關(guān)鍵字abstract聲明:可選publicabstractclass類名{類成員}抽象類中除抽象方法外,還可有非抽象的成員。注意:含有抽象方法的類一定是抽象類,但抽象類不一定含有抽象方法?!纠?-1】定義抽象圖形類,內(nèi)含抽象的面積和周長(zhǎng)方法。定義繼承該類的圓類,重寫(xiě)并實(shí)現(xiàn)面積和周長(zhǎng)方法(未完)。abstractclassShape{//抽象圖形類
publicabstractdoublecalcArea(); publicabstractdoublecalcGirth();}classCircleextendsShape{//繼承抽象圖形類的圓類
privatedoubleradius; publicCircle(doubleradius){this.radius=radius;} publicdoublecalcArea(){ returnMath.PI*Math.pow(radius,2); } publicdoublecalcGirth(){return2*Math.PI*radius;}}【例9-1】(續(xù))再定義繼承抽象圖形類的正方形類。最后定義一個(gè)運(yùn)行主類,構(gòu)建圓和正方形對(duì)象,并計(jì)算它們的面積和周長(zhǎng)。classSquareextendsShape{//繼承抽象圖形類的正方形類
privatedoubleborder;//邊
publicSquare(doubleborder){this.border=border;} publicdoublecalcArea(){ returnMath.pow(border,2); } publicdoublecalcGirth(){returnborder*4;}}publicclassEx1{… CircleaCircle=newCircle(1); System.out.println("構(gòu)建半徑為1的圓"); System.out.printf("圓面積:%.2f",aCircle.calcArea()); … SquareaSquare=newSquare(1); System.out.println("\n構(gòu)建邊長(zhǎng)為1的正方形");…}9.2.2對(duì)比抽象類(方法)與最終類(方法)抽象方法只有被派生類重寫(xiě),才能實(shí)現(xiàn)具體功能。抽象類處于類繼承層次結(jié)構(gòu)中的上層。最終類不能被繼承,處于類繼承層次結(jié)構(gòu)中的最底層。最終類與抽象類是水火不相容的。最終方法是不能被派生類重寫(xiě)的方法。最終方法與抽象方法也是水火不相容,最終方法可以存于最終類,也可存于非最終類。關(guān)于抽象方法、一般方法與最終方法的作用總結(jié)如下:abstract方法只引入方法的名稱。一般方法是方法的一個(gè)實(shí)現(xiàn)。final方法是方法的最后一個(gè)實(shí)現(xiàn)。
9.3接口類型
9.3.1接口定義與實(shí)現(xiàn)
可選publicinterface接口名{常量字段和方法成員}接口體中的成員主要是常量字段和非靜態(tài)的抽象方法。接口成員均默認(rèn)為public,其中常量字段允許省略關(guān)鍵字public、static和final,聲明時(shí)一定要賦值。JDK8版本允許接口含有靜態(tài)的非抽象方法。接口的作用類似抽象類,接口的抽象方法由類實(shí)現(xiàn)。實(shí)現(xiàn)接口語(yǔ)法形式:可選public等class類名implements接口表{含實(shí)現(xiàn)接口的類成員}實(shí)現(xiàn)接口即定義一個(gè)類,為接口的所有抽象方法提供方法體?!纠?-2】】定義圖形接口,內(nèi)含常量字段和抽象的計(jì)算面積和周長(zhǎng)方法。定義實(shí)現(xiàn)該接口的圓類,實(shí)現(xiàn)計(jì)算面積和周長(zhǎng)方法(未完)。interfaceShapeable{//能成形的圖形接口 doubleMIN_AREA=0;//字段默認(rèn)為publicstaticfinal doubleMIN_GIRTH=0; doublecalcArea();
//非靜態(tài)方法默認(rèn)為publicabstract doublecalcGirth();}classCircle2implementsShapeable{//實(shí)現(xiàn)圖形接口的圓類
privatedoubleradius; publicCircle2(doubleradius){this.radius=radius;} publicdoublecalcArea(){//實(shí)現(xiàn)計(jì)算面積方法
returnMath.PI*Math.pow(radius,2); } publicdoublecalcGirth(){return2*Math.PI*radius;}}【例9-2】(續(xù))再定義實(shí)現(xiàn)圖形接口的正方形類,也實(shí)現(xiàn)計(jì)算面積和周長(zhǎng)方法。最后定義一個(gè)主類,構(gòu)建圓和正方形對(duì)象,并計(jì)算它們的面積和周長(zhǎng)。classSquare2implementsShapeable{//實(shí)現(xiàn)接口的正方形類
privatedoubleborder;//邊
publicSquare2(doubleborder){this.border=border;} publicdoublecalcArea(){returnMath.pow(border,2);} publicdoublecalcGirth(){returnborder*4;}}publicclassEx2{… Circle2aCircle=newCircle2(1); System.out.println("構(gòu)建半徑為1的圓"); System.out.printf("圓面積:%.2f",aCircle.calcArea()); … Square2aSquare=newSquare2(1); System.out.println("構(gòu)建了一個(gè)邊長(zhǎng)為1的正方形");…}9.3.2通過(guò)接口來(lái)引用類——接口多態(tài)接口類型可聲明變量,通過(guò)賦值來(lái)引用一個(gè)實(shí)現(xiàn)該接口的類對(duì)象。如可修改例9-2中代碼:
ShapeableaShape; aShape=newCircle2(1);//接口變量引用對(duì)象
System.out.println("構(gòu)建半徑為1的圓");… aShape=newSquare2(1);//引用另一對(duì)象
System.out.println("構(gòu)建邊長(zhǎng)為1的正方形");…這種接口回調(diào)現(xiàn)象與類的多態(tài)性相似,是接口的多態(tài)性。同樣形式的調(diào)用,aShape指向的對(duì)象不同,調(diào)用的方法也不同,結(jié)果當(dāng)然也不同。
9.4接口多重繼承與實(shí)現(xiàn)
9.4.1接口多重繼承
接口類型擁有一個(gè)大家族,接口之間也有繼承與派生關(guān)系。接口允許多重繼承,語(yǔ)法:可選publicinterface接口名extends父接口表
{常量字段和方法成員}如:interfaceIA{...}interfaceIB{...}interfaceICextendsIA,IB{...}9.4.2類實(shí)現(xiàn)多個(gè)接口允許一個(gè)類同時(shí)實(shí)現(xiàn)多個(gè)接口,如:classDimplementsIA,IB{...}類單一繼承的同時(shí),可同時(shí)實(shí)現(xiàn)多個(gè)接口。如:classE{...}classFextendsEimplementsIA,IB{...}繼承一個(gè)父類并實(shí)現(xiàn)多個(gè)接口的類定義形式:可選public等class類名extends父類implements接口表{類成員}實(shí)現(xiàn)多個(gè)接口的類,必須重寫(xiě)各個(gè)接口的抽象方法。
9.5包
9.5.1Java系統(tǒng)API包包就是類、接口等類型的命名存儲(chǔ)空間,因此,包又稱“類庫(kù)”。API包功能和部分類型java.langJava基礎(chǔ)類庫(kù),提供Java編程最基本的類和接口,例如System、String、Math和Thread類,Cloneable和Runnable接口java.util實(shí)用工具包,提供Arrays、Date、Random、Scanner等類,以及Collection<E>、Map<K,V>等接口java.io關(guān)于輸入輸出流的包,提供BufferedReader、FileReader、FileWriter等類,以及DataInput、DataOutput等接口java.awt圖形用戶界面包,常用類有Frame、Button、Label、TextField、Color和Graphics等java.awt.event圖形用戶界面事件包,類有ActionEvent和ItemEvent等、接口有ActionListener和ItemListener等java.applet創(chuàng)建小程序的包,有Applet類和AudioClip接口等java.sql訪問(wèn)數(shù)據(jù)庫(kù)的包,類有DriverManager等,接口有Connection、Statement和ResultSet等網(wǎng)絡(luò)包,有Socke和ServerSocket等類javax.swing提供“輕量級(jí)”圖形用戶界面組件,類有JFrame、JButton、JLabel等9.5.2定義包定義包也叫聲明包,語(yǔ)法:package包名;包語(yǔ)句必須放在程序首行,一個(gè)源程序只能有一個(gè)包語(yǔ)句。包名一般采用小寫(xiě)字母,允許分級(jí)(層)命名,以點(diǎn).分隔。自定義的包對(duì)應(yīng)文件夾,缺省包對(duì)應(yīng)當(dāng)前文件夾。例如,定義包語(yǔ)句:packagecom.fancy;這時(shí),對(duì)應(yīng)的文件夾com\fancy。在Eclipse開(kāi)發(fā)環(huán)境中,創(chuàng)建包會(huì)自動(dòng)創(chuàng)建對(duì)應(yīng)的文件夾。注意:分級(jí)包的命名往往與網(wǎng)站域名相反,如:域名為,則包名是com.fancy?!纠?-3】定義包c(diǎn)om.fancy,再在包中定義一個(gè)圖形接口Shapeable,內(nèi)含抽象的計(jì)算面積和周長(zhǎng)方法。packagecom.fancy;//定義包publicinterfaceShapeable{//圖形接口 doublecalcArea();//省略了publicabstract doublecalcGirth();}在Eclipse環(huán)境下編寫(xiě)含有包的應(yīng)用程序步驟:(1)創(chuàng)建Java項(xiàng)目(2)執(zhí)行File|New|Package命令(3)執(zhí)行File|New|Class或Interface命令(4)最后輸入代碼9.5.3引入包引入包語(yǔ)句語(yǔ)法:import包名.*;//其中*號(hào)表示所有內(nèi)容import包名.類名;import包名.接口名;一個(gè)源程序可使用多個(gè)import語(yǔ)句。import語(yǔ)句要放在:package語(yǔ)句之后,類(接口)定義之前。【例9-4】新建包c(diǎn)om.fancy.aaa,并引入例9-3的包c(diǎn)om.fancy。在新建包中定義實(shí)現(xiàn)com.fancy.Shapeable接口的圓類(未完)。packagecom.fancy.aaa;//定義包importcom.fancy.*;
//引入包c(diǎn)lassCircleimplementsShapeable{//實(shí)現(xiàn)接口的圓類 privatedoubleradius; publicCircle(doubleradius){//構(gòu)造方法 this.radius=radius; } publicdoublecalcArea(){//實(shí)現(xiàn)接口計(jì)算面積方法 returnMath.PI*Math.pow(radius,2); } publicdoublecalcGirth(){//實(shí)現(xiàn)接口計(jì)算周長(zhǎng)方法 return2*Math.PI*radius; }}【例9-4】(續(xù))再定義一個(gè)主類,構(gòu)建圓對(duì)象,計(jì)算其面積和周長(zhǎng)。publicclassEx4{
//主類 publicstaticvoidmain(String[]args){ CircleaCircle=newCircle(1); System.out.println("構(gòu)建半徑為1的圓"); System.out.printf("圓面積:%.2f",aCircle.calcArea()); System.out.printf("\n圓周長(zhǎng):%.2f",aCircle.calcGirth()); }}【例9-5】新建包c(diǎn)om.fancy.bbb,在包中先定義實(shí)現(xiàn)com.fancy.Shapeable接口的正方形類(需引入例9-3定義的包c(diǎn)om.fancy)(未完)。存放正方形類的com\fancy\bbb\Square.java源文件:packagecom.fancy.bbb;
//定義包importcom.fancy.Shapeable;//引入包(接口)publicclassSquareimplementsShapeable{//實(shí)現(xiàn)接口正方形類 privatedoubleborder;
//邊 publicSquare(doubleborder){//構(gòu)造方法 this.border=border; } publicdoublecalcArea(){//實(shí)現(xiàn)接口方法 returnMath.pow(border,2); } publicdoublecalcGirth(){ returnborder*4;
}
}【例9-5】(續(xù))再定義一個(gè)主類,在main方法中構(gòu)建正方形對(duì)象,計(jì)算其面積和周長(zhǎng)。存放主類的com\fancy\bbb\Ex5.java源文件:packagecom.fancy.bbb;//聲明包publicclassEx5{
//主類
publicstaticvoidmain(String[]ar
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025廣西百色市田陽(yáng)區(qū)民政局、共青團(tuán)百色市田陽(yáng)區(qū)委員會(huì)城鎮(zhèn)公益性崗位工作人員招聘2人考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(全優(yōu))
- 2025吉林長(zhǎng)春市吉林大學(xué)白求恩第一醫(yī)院高壓氧科招聘考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(必刷)
- 2025年中國(guó)化妝品袋膜行業(yè)市場(chǎng)分析及投資價(jià)值評(píng)估前景預(yù)測(cè)報(bào)告
- 2025年中國(guó)花園耕作機(jī)行業(yè)市場(chǎng)分析及投資價(jià)值評(píng)估前景預(yù)測(cè)報(bào)告
- 2025廣東省中醫(yī)院貴州醫(yī)院第十三屆貴州人才博覽會(huì)引才19人模擬試卷及答案詳解(各地真題)
- 2025廣西防城港市總工會(huì)招聘編外工作人員1人模擬試卷及參考答案詳解一套
- 2025廣東連平縣田源鎮(zhèn)人民政府應(yīng)急救援中隊(duì)隊(duì)員招聘1人模擬試卷及答案詳解參考
- 2025甘肅蘭州中核五〇四醫(yī)院招聘護(hù)理員考前自測(cè)高頻考點(diǎn)模擬試題及1套完整答案詳解
- 2025江蘇海晟控股集團(tuán)有限公司下屬子公司招聘高級(jí)管理人員人員考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(歷年真題)
- 2025年臨沂市商業(yè)學(xué)校公開(kāi)招聘教師(18名)考前自測(cè)高頻考點(diǎn)模擬試題及1套參考答案詳解
- 新蘇教版科學(xué)五年級(jí)上冊(cè)《熱對(duì)流》課件
- 2024年03月黑龍江省綏化市2024年度“市委書(shū)記進(jìn)校園”引才活動(dòng)引進(jìn)1523名人才(第一階段)筆試歷年典型考題及考點(diǎn)研判與答案解析
- DZ∕T 0033-2020 固體礦產(chǎn)地質(zhì)勘查報(bào)告編寫(xiě)規(guī)范(正式版)
- 喉癌“一病一品”
- 單元閱讀教學(xué)設(shè)計(jì)案例及分析
- 組建鈦業(yè)科技公司方案
- 公路養(yǎng)護(hù)安全作業(yè)規(guī)程-公路養(yǎng)護(hù)作業(yè)安全的規(guī)定
- 新概念英語(yǔ)青少版入門 A-Unit-1課件(共98張)
- 建筑垃圾減量化專項(xiàng)方案
- 2023全國(guó)技能競(jìng)賽-職業(yè)素養(yǎng)考核試題及答案
- 實(shí)驗(yàn)室攪拌器實(shí)驗(yàn)室攪拌器安全操作及保養(yǎng)規(guī)程
評(píng)論
0/150
提交評(píng)論