Java程序設(shè)計(jì)應(yīng)用開發(fā)教程 課件 5.1 抽象類與接口_第1頁
Java程序設(shè)計(jì)應(yīng)用開發(fā)教程 課件 5.1 抽象類與接口_第2頁
Java程序設(shè)計(jì)應(yīng)用開發(fā)教程 課件 5.1 抽象類與接口_第3頁
Java程序設(shè)計(jì)應(yīng)用開發(fā)教程 課件 5.1 抽象類與接口_第4頁
Java程序設(shè)計(jì)應(yīng)用開發(fā)教程 課件 5.1 抽象類與接口_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

單元5

抽象類與接口5.1抽象類與接口程序設(shè)計(jì)

任務(wù)書5.1設(shè)計(jì)成品入庫業(yè)務(wù)接口任務(wù)描述基于RFID的成品自動防呆出貨系統(tǒng)中,入庫RFID系統(tǒng)的數(shù)據(jù)是倉庫管理員從MES系統(tǒng)中導(dǎo)出的數(shù)據(jù),與RFID系統(tǒng)掃描實(shí)際成品貨物上的RFID標(biāo)簽數(shù)據(jù)進(jìn)行對比,匹配的成品才可以入庫。對于入庫的成品數(shù)據(jù)可以進(jìn)行更新操作,即增加、刪除、修改、查詢。效果如圖5-1所示。圖5-1成品入庫管理系統(tǒng)知識目標(biāo)理解抽象類的概念。理解接口的作用。熟悉接口的定義與實(shí)現(xiàn)。熟悉對象轉(zhuǎn)換類型。能力目標(biāo)能使用多態(tài)與接口結(jié)合的技術(shù),解決實(shí)際問題。能使用面向接口編程模式可以使業(yè)務(wù)邏輯思路清晰,編程靈活,可維護(hù)性高。素養(yǎng)目標(biāo)培養(yǎng)探究式學(xué)習(xí)的能力以及精益求精的工匠精神。團(tuán)隊(duì)合作、溝通交流。任務(wù)書5.1設(shè)計(jì)成品入庫業(yè)務(wù)接口生活中的抽象案例

相關(guān)知識模擬“商店銷售商品”場景:“商店銷售商品”,這就是一個抽象的行為:到底哪個商店,是超市還是商場,是實(shí)體店還是網(wǎng)店,都不清楚?這個抽象行為沒有指明具體的信息。我們設(shè)計(jì)一個超市的抽象類,并定義銷售的抽象方法。具體是哪家商店,銷售什么商品,交給子類去實(shí)現(xiàn)。5.1.1抽象類抽象類和抽象方法

抽象類抽象類:Java中有一種類,派生出很多子類,而自身是不能用來生產(chǎn)對象的,這種類稱為“抽象類”。抽象類的作用有點(diǎn)類似“模板”,其目的是要設(shè)計(jì)者依據(jù)它的格式,來修改并創(chuàng)建新的子類。定義抽象類與抽象方法時,必須使用abstract關(guān)鍵字,語法如下:[訪問權(quán)限修飾符]abstractclass類名{

聲明數(shù)據(jù)成員;

訪問權(quán)限返回值的數(shù)據(jù)類型方法名(參數(shù)列表){

//定義一般方法}

abstract

返回值的數(shù)據(jù)類型方法名(參數(shù)列表);}5.1.1抽象類生活中的抽象案例案例:超市抽象類public

abstract

classMarket{publicStringname;//商店名稱publicStringgoods;//商品名稱public

abstract

voidsale();}定義一個抽象類定義一個抽象方法在抽象類中,可以包含抽象方法,也可以不包含抽象方法,但是包含了抽象方法的類必須被定義為抽象類。5.1.1抽象類案例:超市抽象類public

classRTMarketextendsMarket{public

voidsale(){ System.out.println(name+"超市銷售"

+goods);}}public

classJingDongMarketextendsMarket{public

void

sale(){System.out.println(name+"商城銷售"

+goods);}}抽象類被繼承后,子類需要重寫抽象類中的所有抽象方法如果繼承抽象類的子類也被聲明為抽象類,則可以不用重復(fù)父類中所有的抽象方法。5.1.1抽象類public

classGoShoping{public

static

voidmain(String[]args){Marketmarket=newRTMarket();

market.name="大潤發(fā)";market.goods="奧妙洗衣粉";market.shop();market=newJingDongMarket();

market.name="京東";market.goods="藍(lán)月亮洗衣粉";market.shop();}}案例:抽象類抽象類不能直接被實(shí)例化,

如newMarket()。利用子類實(shí)例化,實(shí)現(xiàn)對象多態(tài)性,向上轉(zhuǎn)型。5.1.1抽象類抽象類的使用原則

抽象類抽象類必須要有子類,子類必須使用extends繼承抽象類,一個子類只能繼承

一個抽象類。創(chuàng)建子類,必須實(shí)現(xiàn)抽象類中的全部抽象方法。反之,該子類則為抽象類。如果要想實(shí)例化抽象類的對象,則可以通過子類進(jìn)行對象的向上轉(zhuǎn)型來實(shí)現(xiàn)。5.1.1抽象類

接口概念生活中的接口案例U盤

移動硬盤

手機(jī)5.1.2接口

接口概念生活中的接口案例

聲卡顯卡網(wǎng)卡主板每種卡的內(nèi)部結(jié)構(gòu)都不相同,可以把聲卡、網(wǎng)卡、顯卡都插在PCI插槽上,而不用擔(dān)心哪個插槽是專門插哪個卡的。5.1.2接口

接口概念什么是接口接口(Interface)的本質(zhì)其實(shí)也是一個類,而且是一個比抽象類還要抽象的類。5.1.2接口

接口概念什么是接口

接口(Interface),接口是類的行為的抽象概述。在JAVA編程語言中,是一個抽象類型,是抽象方法(功能)的集合,接口通常以interface來聲明。(1)有利于代碼的規(guī)范(2)有利于代碼進(jìn)行維護(hù)(3)有利于代碼的安全和嚴(yán)密(4)豐富了繼承的方式接口的作用5.1.2接口

接口及實(shí)現(xiàn)類接口的聲明[訪問權(quán)限修飾符]interface

接口名[extends

父接口名列表]{

[public][static][final]常量;

[public]

[abstract]方法名();//定義沒有方法體的抽象方法}在Java中接口是一種與類相似的結(jié)構(gòu),只包含常量和抽象方法。每個接口都被編譯為獨(dú)立的字節(jié)碼文件。5.1.2接口

接口及實(shí)現(xiàn)類接口的實(shí)現(xiàn)[訪問權(quán)限修飾符]class

類名

implements

接口名表{

}接口可實(shí)現(xiàn)多繼承,一個類可以實(shí)現(xiàn)多個接口。實(shí)現(xiàn)接口的子類不能對接口中的變量重新賦值。5.1.2接口

示例:接口及實(shí)現(xiàn)類創(chuàng)建教師類和學(xué)生類,兩個類都實(shí)現(xiàn)了問候接口和工作接口,模擬上課的場景。public

interfaceAction{//創(chuàng)建一個Action接口 public

voidwork();//創(chuàng)建一個抽象方法work() public

voidtalk();//創(chuàng)建一個抽象方法talk()}聲明接口Action命名規(guī)范:接口名必須是合法的Java標(biāo)識符,一般情況下,接口名可以是一個形容詞或者名詞,要求首字母大寫。15.1.2接口public

classStudentimplementsAction{//創(chuàng)建一個Student類實(shí)現(xiàn)接口ActionpublicStringname;//定義姓名publicStudent(Stringname){//對姓名進(jìn)行初始化this.name=name;}@Overridepublic

voidwork(){//重寫work()方法System.out.println(name+":同學(xué)開始記筆記");}@Overridepublic

voidtalk(){//重寫talk()方法System.out.println(name+":老師好");}}

示例:接口及實(shí)現(xiàn)類聲明Student類實(shí)現(xiàn)接口2接口必須有子類,子類依靠implements關(guān)鍵字可以實(shí)現(xiàn)多個接口。利用接口創(chuàng)建子類的過程,稱為接口實(shí)現(xiàn)。5.1.2接口

示例:接口及實(shí)現(xiàn)類public

classTeacherimplementsAction{//創(chuàng)建一個Teacher類實(shí)現(xiàn)接口Action

publicStringname;//定義姓名publicTeacher(Stringname){//對姓名進(jìn)行初始化this.name=name;}@Overridepublic

voidwork(){//重寫work()方法System.out.println(name+":老師開始上課");}@Overridepublic

voidtalk(){//重寫talk()方法System.out.println(name+":同學(xué)們好");}}聲明Teacher類實(shí)現(xiàn)接口3接口中的方法都是抽象方法,所以當(dāng)子類實(shí)現(xiàn)接口時,必須實(shí)現(xiàn)接口中的所有抽象方法。5.1.2接口

示例:接口及實(shí)現(xiàn)類public

classTest{//創(chuàng)建一個Test類public

static

voidmain(String[]args){Action[]per={newStudent("張非"),newTeacher("孫斌")};//通過相應(yīng)的對象調(diào)用相應(yīng)的方法實(shí)現(xiàn)控制臺輸出結(jié)果per[0].talk();per[1].talk();per[1].work();per[0].work();}}測試類Test利用實(shí)現(xiàn)類實(shí)例化,實(shí)現(xiàn)對象多態(tài)性,向上轉(zhuǎn)型。接口與抽象類相似,不能使用new操作符創(chuàng)建接口的實(shí)例。運(yùn)行時,根據(jù)實(shí)際創(chuàng)建的對象類型調(diào)用相應(yīng)的方法實(shí)現(xiàn)。45.1.2接口

接口及實(shí)現(xiàn)類接口和抽象類的區(qū)別

接口與抽象類的區(qū)別變量構(gòu)造方法方法抽象類無限制子類通過構(gòu)造方法調(diào)用父類構(gòu)造方法,抽象類不能用new操作符實(shí)例化無限制接口所有變量必須是publicstati

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論