Java程序設計應用開發(fā)教程 課件 單元5 抽象類與接口_第1頁
Java程序設計應用開發(fā)教程 課件 單元5 抽象類與接口_第2頁
Java程序設計應用開發(fā)教程 課件 單元5 抽象類與接口_第3頁
Java程序設計應用開發(fā)教程 課件 單元5 抽象類與接口_第4頁
Java程序設計應用開發(fā)教程 課件 單元5 抽象類與接口_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單元5

抽象類與接口5.1抽象類與接口程序設計

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

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

抽象類抽象類:Java中有一種類,派生出很多子類,而自身是不能用來生產(chǎn)對象的,這種類稱為“抽象類”。抽象類的作用有點類似“模板”,其目的是要設計者依據(jù)它的格式,來修改并創(chuàng)建新的子類。定義抽象類與抽象方法時,必須使用abstract關鍵字,語法如下:[訪問權(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);}}抽象類被繼承后,子類需要重寫抽象類中的所有抽象方法如果繼承抽象類的子類也被聲明為抽象類,則可以不用重復父類中所有的抽象方法。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="藍月亮洗衣粉";market.shop();}}案例:抽象類抽象類不能直接被實例化,

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

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

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

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

移動硬盤

手機5.1.2接口

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

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

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

接口概念什么是接口

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

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

接口名[extends

父接口名列表]{

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

[public]

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

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

類名

implements

接口名表{

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

static

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

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

接口與抽象類的區(qū)別變量構(gòu)造方法方法抽象類無限制子類通過構(gòu)造方法調(diào)用父類構(gòu)造方法,抽象類不能用new操作符實例化無限制接口所有變量必須是publicstaticfinal沒有構(gòu)造方法。接口不能使用new操作符實例化所有方法必須是公有的抽象實例方法。Java只允許為類的擴展做單一繼承,但是允許使用接口做多重擴展。利用extends關鍵字繼承其他接口。接口可以拓展其他接口而不是類。一個類可以擴展它的父類同時實現(xiàn)多個接口。抽象類和接口都是用來明確多個對象的共同特征的。在實際設計過程中,如果描述父子關系表示強的“是一種”的關系應該用類建模,弱的“是一種”的關系,也稱為類屬關系,表明對象擁有某種屬性時,可以用接口建模。5.1.2接口單元5

抽象類與接口5.2集合框架程序設計

任務書5.2更新成品入庫數(shù)據(jù)任務描述基于RFID的成品自動防呆出貨系統(tǒng)中,倉庫管理人員可以對導入的成品數(shù)據(jù)進行查詢、修改與刪除等操作。成品導入文件模板數(shù)據(jù)操作,定義了一個數(shù)據(jù)類MESDataSet.java,使用ArrayList集合存放多個成品信息。在任務5.1基礎上,重新編寫StockDao接口中的5個方法,針對入庫的成品數(shù)據(jù)可以進行更新操作,即增加、刪除、修改、查詢。效果如圖5-2所示。圖5-2成品入庫管理系統(tǒng)知識目標熟悉遍歷集合的方法。熟悉List、Set、Map等接口及其實現(xiàn)類中的常用方法。熟悉不同集合容器的特點。能力目標會查看集合容器的API文檔。能對集合進行遍歷。能選用合適的集合類與方法,解決實際問題。素養(yǎng)目標培養(yǎng)團隊協(xié)作和大局意識。培養(yǎng)創(chuàng)新意識,提升專業(yè)認同度。任務書5.2更新成品入庫數(shù)據(jù)生活中的抽象案例

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

相關知識實際問題一

學生1學生20一維數(shù)組每天的新聞總數(shù)不確定,顯然無法再使用數(shù)組保存如何存儲一個班的學生信息(假定一個班容納20名學生)publicclassStudent

{ publicString

stuName; publicStringstuNumber; publicStringSex; publicvoidtoString() {

System.out.println(“……”); }}publicstaticvoidmain(Stringargs[])

{Students01=newStudent();Students02=newStudent();

……

Studentarr[]={s01,s02,……};}1.集合框架實際問題二

每天的新聞總數(shù)不確定,顯然無法再使用數(shù)組保存如何存儲每天的新聞信息?新聞1……新聞N實際問題二

如何存儲課程的代碼與課程信息,能夠通過代碼方便地獲得課程信息?如果寫程序時并不知道程序運行時會需要多少對象,或者,需要更復雜的方式存儲對象,——那么,可以使用Java集合框架,來解決這類問題。代碼1……代碼N課程1……課程N一一對應1.集合框架集合類

為了保存數(shù)量不確定的數(shù)據(jù),以及保持具有映射關系的數(shù)據(jù),Java提供了集合類。集合類主要負責保存、盛裝其他數(shù)據(jù),也被稱為容器類。Java所有的集合類都位于java.util包下,提供了一個表示和操作對象集合的統(tǒng)一架構(gòu),包含大量集合接口,以及這些接口的實現(xiàn)類和操作它們的算法。集合框架

集合框架集合框架

Java集合類型分為Collection和Map,它們是Java集合的根接口,這兩個接口又包含了一些子接口或?qū)崿F(xiàn)類。Collection接口基本結(jié)構(gòu)

集合框架集合框架

Java集合類型分為Collection和Map,它們是Java集合的根接口,這兩個接口又包含了一些子接口或?qū)崿F(xiàn)類。Map接口基本結(jié)構(gòu)2.ArrayListArrayList類

ArrayList類實現(xiàn)了可變數(shù)組的大小,存儲在內(nèi)的數(shù)據(jù)稱為元素。它還提供了快速基于索引訪問元素的方式,對尾部成員的增加和刪除支持較好。publicclassTest{

publicstaticvoidmain(String[]args){ Listlst1=newArrayList();//創(chuàng)建集合 ArrayListlst2=newArrayList();}}2.ArrayListArrayList集合類常用方法方法名說明booleanadd(Objecto)在列表的末尾順序添加元素,起始索引位置從0開始voidadd(int

index,Objecto)在指定的索引位置添加元素。索引位置必須介于0和列表中元素個數(shù)之間intsize()返回列表中的元素個數(shù)Objectget(intindex)返回指定索引位置處的元素。取出的元素是Object類型,使用前需要進行強制類型轉(zhuǎn)換booleancontains(Objecto)判斷列表中是否存在指定元素booleanremove(Objecto)從列表中刪除元素Object remove(intindex)從列表中刪除指定位置元素,起始索引位置從0開始Int

indexOf/lastIndexOf(Objecto)返回對象o在List中的第一次/最后一次出現(xiàn)的位置Objectset(int

index,Objectelement)將index索引處的元素替換成element對象,返回新元素2.ArrayListArrayList集合類常用操作添加元素訪問元素修改元素刪除元素計算元素個數(shù)迭代數(shù)組列表list.add("link");list.add("tom");list.add(1,"lucy");list.get(0);list.get(1);list.get(i);list.remove(0);list.remove("link");list.set(2,"bobo");intsize=list.size();for(inti=0;i<list.size();i++){

System.out.println(list.get(i));}舉例

2.ArrayListpublicclassTest{

publicstaticvoidmain(String[]args){Listlist=newArrayList();//創(chuàng)建集合list.add(“A”);list.add(“B”);list.add(“D”);

list.add(2,“C”); list.remove(“A”);

}}舉例

使用ArrayList類向集合中添加三位客戶(Customer)信息,包括客戶身份證號、姓名和電話,然后遍歷集合輸出這些客戶信息。2.ArrayListpublic

classCustomer{publicStringname;public

StringidNumber;publicStringtel;

publicCustomer(Stringname){//帶參構(gòu)造方法

this.name=name}public

voidtoString(){//重寫方法

System.out.println("姓名:"+name+....);}}publicclassTest{

publicstaticvoidmain(String[]args){

Customerc01=new

Customer("張小三");

Customerc02=new

Customer("李小四");

Customerc03=new

Customer("王小五");Listlist=newArrayList();//創(chuàng)建集合list.add(c01);list.add(c02);list.add(c03);System.out.println("***客戶信息***");for(inti=0;i<list.size();i++){//循環(huán)遍歷集合,輸出集合元素

Customerc=(Customer)list.get(i);System.out.println(c);}}}

(1)封裝一個學生類,包含學號、姓名兩個屬性(已提供)(2)定義一個測試類,向ArrayList對象中添加5個學生,并且遍歷學生信息2.ArrayListLinkedList類

采用鏈表結(jié)構(gòu)保存對象,這種結(jié)構(gòu)的優(yōu)點是便于向集合中插入或者刪除元素。LinkedList是一個雙向鏈表,使用LinkedList類比ArrayList類效率高。3.LinkedListpublicclassTest{

publicstaticvoidmain(String[]args){ Listlst1=newLinkedList();//創(chuàng)建集合 LinkedListlst2=newLinkedList();}}3.LinkedListLinkedList類特殊方法方法名說明voidaddFirst(Objecto)在列表的首部添加元素voidaddLast(Objecto)在列表的末尾添加元素Object getFirst()返回列表中的第一個元素Object getLast()返回列表中的最后一個元素Object removeFirst()刪除并返回列表中的第一個元素Object removeLast()刪除并返回列表中的最后一個元素VoidClear()清空3.LinkedList

封裝一個人員類Person(包括姓名和年齡),使用LinkedList保存人員信息。調(diào)用相關方法實現(xiàn)輸出顯示,效果如圖所示:4.Map實際問題

高校學生應聘至外企實習工作,每個人都會擁有一個英文名稱,對應該學生對象Jack蘇工院畢業(yè)的李明Rose蘇州職大畢業(yè)的劉麗Anna蘇州工藝美院畢業(yè)的楊慧通過key(英文名稱)來獲得value(學生對象)4.MapJava中的Map也是一個集合,一種依照鍵(key)存儲元素的容器。map集合中的一個元素包含對象,一個對象作為鍵,一個對象作為值。鍵不可以重復,但是值可以重復。用于維護“鍵-值對”的關聯(lián)性,可以通過鍵查找值。5.HashMapHashMap類

HashMap是Map接口的一個具體實現(xiàn)類,它存儲的內(nèi)容是鍵值對(key-value)映射。publicclassTest{

publicstaticvoidmain(String[]args){

HashMapmap=newHashMap();//創(chuàng)建集合 Mapmap2=new

HashMap();}}HashMap常用方法方法名說明Objectput(Objectkey,Objectval)以“鍵-值對”的方式進行存儲Objectget(Objectkey)根據(jù)鍵返回相關聯(lián)的值,如果不存在指定的鍵,返回nullObjectremove(Objectkey)刪除由指定的鍵映射的“鍵-值對”intsize()返回元素個數(shù)SetkeySet()返回鍵的集合Collectionvalues()返回值的集合boolean containsKey(Objectkey)如果存在由指定的鍵映射的“鍵-值對”,返回true5.HashMapHashMap集合類常用操作將鍵值存入map查找是否存在某個鍵通過鍵,獲取值查找是否存在某個值map.put("Zara","8");map.put("Mahnaz","31");map.containsKey(("Ayan");map.get("Zara");map.get("Mahnaz");5.HashMapmap.containsValue(("31");通過鍵,刪除元素獲取元素個數(shù)map.remove("Zara");map.remove("Mahnaz");intn=map.size();獲取鍵的集合獲取值的集合map.keySet();map.values();使用舉例

publicclassTest{

publicstaticvoidmain(String[]args){

HashMap<String,String>Sites=newHashMap<String,String>(); Sites.put("one","淘寶"); //添加鍵值對 Sites.put("two","京東"); Sites.put("three",“蘇寧易購"); Sites.put("four","拼多多");

System.out.println(Sites.get("three"));

//通過Key來獲取Value

System.out.println(Sites.size()); //獲取元素數(shù)量

Sites.remove("four");

//通過Key來刪除元素

}}5.HashMap課堂練習

有如下

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論