播客java基礎(chǔ)班面向?qū)ο骭第1頁
播客java基礎(chǔ)班面向?qū)ο骭第2頁
播客java基礎(chǔ)班面向?qū)ο骭第3頁
播客java基礎(chǔ)班面向?qū)ο骭第4頁
播客java基礎(chǔ)班面向?qū)ο骭第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、成都傳智播客教育 Java 面向?qū)ο?講師:Will 成都傳智播客教育 今日任務(wù)模板模式接口及其應(yīng)用內(nèi)部類枚舉成都傳智播客教育 抽象類的體現(xiàn)-模板模式抽象類是多個具體子類抽象出來的父類,具有高層次的抽象性;以該抽象類作為子類的模板可以避免子類設(shè)計的隨意性;抽象類的體現(xiàn)主要就是模板模式設(shè)計,抽象類作為多個子類的通用模板,子類在抽象類的基礎(chǔ)上進行拓展,但是子類在總體上大致保留抽象類的行為方式;編寫一個抽象父類,該父類提供了多個子類的通用方法,并把一個或多個抽象方法留給子類去實現(xiàn),這就是模板設(shè)計模式;模板模式應(yīng)用的簡單規(guī)則:1.抽象父類可以只定義需要使用的某些方法,其余留給子類去實現(xiàn);2.父類提供的

2、方法只是定義了一個通用算法,其實現(xiàn)必須依賴子類的輔助;統(tǒng)一打印圖形周長和面積的例子成都傳智播客教育 接口(interface)的概念抽象類是從多個類中抽象出來的模板,若要將這種抽象進行得更徹底,就得用到一種特殊的“抽象類” 接口;生活中聽說過的USB接口其實并不是我們所看到的那些插槽,而是那些插槽所遵循的一種規(guī)范;而我們看到的那些插槽是根據(jù)USB規(guī)范設(shè)計出來的實例而已,也就說插槽是USB的實例;對應(yīng)不同型號的USB設(shè)備而言,他們各自的USB插槽都需要遵循一個規(guī)范,遵守這個規(guī)范就可以保證插入插槽的設(shè)備能與主板正常通信;對于同一種型號的主板上的多個USB插槽,他們有相同的數(shù)據(jù)交換方式,相同的實現(xiàn)細

3、節(jié),可認為他們都是同一個類的不同實例;成都傳智播客教育 接口,類,對象示意圖接口只定義了類應(yīng)當(dāng)遵循的規(guī)范,卻不關(guān)心這些類的內(nèi)部數(shù)據(jù)和其方法內(nèi)的實現(xiàn)細節(jié).接口只規(guī)定了這些類里必須提供的方法;從而分離了規(guī)范和實現(xiàn).增強了系統(tǒng)的可拓展性和維護性;成都傳智播客教育 interface定義接口定義一種規(guī)范,規(guī)定一個類必須做什么,但它不管如何具體去做;修飾符 interface 接口名 extends 父接口1,父接口2.沒有構(gòu)造方法,不能實例化;接口只能繼承接口,不能繼承類接口里沒有普通方法,方法全是抽象的;接口里的方法默認修飾符是public abstract;接口里的字段全是全局常量,默認修飾符是p

4、ublic static final;接口里的成員包括(主要是前兩個):全局常量公共的抽象方法內(nèi)部類(包括內(nèi)部類,內(nèi)部接口,內(nèi)部枚舉類);成都傳智播客教育 使用接口實現(xiàn)接口(支持多實現(xiàn))修飾符 class 類名 implements 接口1,接口2.接口的實現(xiàn)必須在 extends 之后;實現(xiàn)接口的方法必須是 public 類型接口不能創(chuàng)建實例,但是可以聲明引用類型的變量。此時,引用類型的變量必須指向到其實現(xiàn)類對象。IStudent s = new String();/IStudent s = new StudentImpl();/格式:public class SubImpl extends

5、 Super implements IA,IB成都傳智播客教育 面向接口編程之制定標(biāo)準(zhǔn)電腦上有USB接口,只要是USB設(shè)備都可以插入電腦并使用。interface USB/定義USB標(biāo)準(zhǔn) void useUSB();/USB有使用USB的行為class Computer /定義電腦 public static void plugIn(USB usb)/安裝USB設(shè)備 usb.useUSB() ;/調(diào)用USB的行為 class Flash implments USB/創(chuàng)建USB設(shè)備-閃存class Print implements USB/創(chuàng)建USB設(shè)備-打印機成都傳智播客教育 面向接口編程 之

6、簡單工廠模式interface ICellPhone void sendMsg();class Factory public static ICellPhone getInstance(String type) ICellPhone p = null; if (htc.equalsIgnoreCase(type) ff = new HTC(); else if (iphone.equalsIgnoreCase(type) ff = new IPhone();return p;屏蔽不同子類實現(xiàn)的差異,提高代碼的可拓展性和可維護性;成都傳智播客教育 面向接口編程 之適配器模式使用一個現(xiàn)成的類,但是

7、它的接口不完全符合你的需求,咋辦;interface IWindowvoid max();void min();void close();abstract class WindowAdapter implements IWindowpublic void max()public void min()public void close()class MyWindow extends WindowAdapter public void close()比如,窗體有變大,變小,關(guān)閉的行為,但是我現(xiàn)在只需要關(guān)閉行為;成都傳智播客教育 接口和抽象類相同點:都位于繼承的頂端,用于被其他實現(xiàn)或繼承;都不能實例

8、化;都包含抽象方法,其子類都必須覆寫這些抽象方法;區(qū)別:抽象類為部分方法提供實現(xiàn),避免子類重復(fù)實現(xiàn)這些方法,提供代碼重用性;接口只能包含抽象方法;一個類只能繼承一個直接父類(可能是抽象類),卻可以實現(xiàn)多個接口;(接口彌補了Java的單繼承)二者的選用:優(yōu)先選用接口,盡量少用抽象類;需要定義子類的行為,又要為子類提供共性功能時才選用抽象類;成都傳智播客教育 抽象類和接口的區(qū)別成都傳智播客教育 內(nèi)部類類中有類內(nèi)部類:嵌套類外部類:宿主類把內(nèi)部類隱藏在外部類之內(nèi),不許同包的其他類訪問該類;內(nèi)部類可以訪問外部類的私有數(shù)據(jù),外部類不能訪問內(nèi)部類的實現(xiàn)細節(jié),比如字段;觀察編譯后的字節(jié)碼文件非靜態(tài)內(nèi)部類;靜

9、態(tài)內(nèi)部類,局部內(nèi)部類;匿名內(nèi)部類適合于僅使用一次使用的類;成都傳智播客教育 非靜態(tài)內(nèi)部類若外部類字段,內(nèi)部類字段,內(nèi)部類方法變量同名,則其訪問方式分別是:訪問外部類的字段:外部類類名.this.字段訪問內(nèi)部類字段:this.字段訪問內(nèi)部類方法的局部變量:字段成都傳智播客教育 非靜態(tài)內(nèi)部類例子成都傳智播客教育 在外部類以外訪問非靜態(tài)內(nèi)部類內(nèi)部類不能是private修飾,否則不能訪問: 為什么?外部類以外的地方定義內(nèi)部類變量OuterClass.InnerClass varName ;非靜態(tài)內(nèi)部類對象是存放在外部類的對象里的,因此在創(chuàng)建非靜態(tài)內(nèi)部類對象之前,必須先創(chuàng)建其外部類的對象OuterIns

10、tance.new InnerClass(參數(shù)列表);成都傳智播客教育 在外部類以外訪問非靜態(tài)內(nèi)部類例子成都傳智播客教育 靜態(tài)內(nèi)部類使用static修飾內(nèi)部類,該內(nèi)部類屬于其外部類,而不屬于外部類的實例;靜態(tài)內(nèi)部類可包括靜態(tài)成員也可包括非靜態(tài)成員。根據(jù)靜態(tài)成員不能訪問非靜態(tài)成員的規(guī)定,所以靜態(tài)內(nèi)部類不能訪問外部類實例成員,只能訪問外部類的靜態(tài)成員;成都傳智播客教育 靜態(tài)內(nèi)部類例子成都傳智播客教育 在外部類以外訪問靜態(tài)內(nèi)部類因為靜態(tài)內(nèi)部類是外部類的類成員,因此在創(chuàng)建內(nèi)部類對象時不需創(chuàng)建外部類的對象;創(chuàng)建內(nèi)部類對象:new OuterClass.InnerClass(參數(shù)列表)注:靜態(tài)內(nèi)部類的全名

11、應(yīng)該是OuterClass.InnerClass,所以要看作是一個整體;成都傳智播客教育 在外部類以外訪問靜態(tài)內(nèi)部類例子成都傳智播客教育 局部內(nèi)部類局部內(nèi)部類:定義在方法里的內(nèi)部類;特點:不能在宿主類以外的地方使用,局部內(nèi)部類也不能使用訪問修飾符和static修飾;局部內(nèi)部類只能訪問方法中final修飾的局部變量:因為final修飾的變量相當(dāng)于一個常量,其生命周期超出了方法運行的生命周期;成都傳智播客教育 匿名內(nèi)部類適合只使用一次的類不能是抽象類,因為系統(tǒng)在創(chuàng)建匿名內(nèi)部類的時候,會立即創(chuàng)建匿名內(nèi)部類的對象。匿名內(nèi)部類不能定義構(gòu)造器,因為匿名內(nèi)部類沒有類名。格式:new 父類構(gòu)造器(實參列表)

12、或 接口()/匿名內(nèi)部類的類體部分注意:匿名內(nèi)部類必須繼承一個父類或者實現(xiàn)一個接口,但最多只能一個父類或?qū)崿F(xiàn)一個接口;成都傳智播客教育 匿名內(nèi)部類成都傳智播客教育 設(shè)計顏色類設(shè)計一個類來存放RED,GREEN,BLUE三種顏色:public class Color public static final Integer RED = 1; public static final Integer GREEN= 2; public static final Integer BLUE = 3;.main. Integer red = Color.RED; Integer green= Color.GR

13、EEN; System.out.println(red + green);設(shè)計合理嗎?成都傳智播客教育 設(shè)計顏色類class Colorpublic static final Color RED = new Color(紅);public static final Color GREEN = new Color(綠);public static final Color BLUE = new Color(藍);private String name;private Color(String name) = name;public String getName()return n

14、ame;成都傳智播客教育 枚舉類(enum)使用enum聲明,默認直接繼承了java.lang.Enum類,而不是Object類;枚舉類的對象是固定的,實例個數(shù)有限,枚舉對象后可以跟()。枚舉元素必須位于枚舉類體中的最開始部分,枚舉元素后要有分號與其他成員分隔。枚舉類的構(gòu)造方法的權(quán)限修飾符默認是private;一旦枚舉對象后面加上,那么該對象實際是枚舉匿名內(nèi)部類對象;所有枚舉類都提供一個靜態(tài)的values()方法(返回該枚舉類所有對象組成的數(shù)組),便于遍歷所有枚舉對象;所有枚舉類都提供一個靜態(tài)的valueOf(String name)方法, 返回枚舉類中對象名等于 name的對象。public

15、 enum ColorRED(), GREEN(), BLUE;成都傳智播客教育 使用枚舉類Enum是一個抽象類,是所有枚舉類的直接父類;Enum常見方法:String name();/ 返回枚舉實例名稱;int ordinal();/ 返回枚舉實例在枚舉類中的索引,從0開始;String toString();/ 返回枚舉對象的自我描述;(看源代碼)在switch語句中使用枚舉對象;在枚舉類中使用toString方法;使用for-each中操作枚舉對象;枚舉類的構(gòu)造方法;枚舉類覆寫接口抽象方法的兩種方式;注意:匿名內(nèi)部類枚舉實現(xiàn)單例模式;成都傳智播客教育 例子成都傳智播客教育 枚舉類的構(gòu)造方

16、法枚舉類既然是一種特殊的類,那么也應(yīng)該有自己的構(gòu)造方法;普通類創(chuàng)建對象的時候,可以接收參數(shù),那么枚舉類呢?enum Color RED(紅),GREEN(綠),BLUE(藍);private String name;private Color(String name) = name;public String getName() return name;public String toString() return ;/this表示誰 ?成都傳智播客教育 枚舉類實現(xiàn)接口枚舉類覆寫接口抽象方法的兩種方式:在枚舉類中實現(xiàn)接口的抽象方法;在枚舉匿名內(nèi)部類中實現(xiàn)接口的抽象方法;enum Color implements I RED()public void show() , GREENpublic void show() , BLUEpublic void show() ;interface I void show();enum Color implements I RED(), GREEN, BLUE; public v

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論