版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、18. 面向?qū)ο蟾呒墸?6) 本季要點:講解抽象類與接口的關(guān)系。本季講解了java中關(guān)于抽象類與接口的具體區(qū)別,同時講解了兩者的一些其他聯(lián)系。之后講解了模板設(shè)計模式、代理設(shè)計模式,最后又重點強調(diào)了抽象類和接口之間的關(guān)系blog: 零基礎(chǔ)學(xué)JAVAJava SE面向?qū)ο蟛糠?18.面向?qū)ο蟾呒墸?6) 2009-02-08上季內(nèi)容回顧:1、面向?qū)ο笾薪涌谂c抽象類的具體應(yīng)用。 可以通過對象的多態(tài)性,為父類實例化,之后一切的操作標準以父類為主。本季主要知識點:講解抽象類與接口的關(guān)系。1、一個抽象類中能否包含一個接口呢?abstract class A
2、60; public abstract void fun(); interface B
3、; public void print(); 我們來驗證測試下哈發(fā)現(xiàn)生成A$B.class,表示B作為A的內(nèi)部接口,證明一個抽象類中可以包含一個內(nèi)部接口。那怎么使用
4、呢?我們看下面哈首先我們先子類X覆寫父類A方法但不覆寫接口B中的方法abstract class A public abstract void fun(); interface B
5、160; public void print();
6、160; class X extends A /覆寫父類fun()方法 public void fun()
7、60; System.out.println("Hello World!");
8、發(fā)現(xiàn)編譯沒有問題哈現(xiàn)在我們測試覆寫接口方法哈abstract class A public abstract void fun(); interface B
9、160; public void print();
10、160; class X extends A /覆寫父類fun()方法 public void fun()
11、60; B b = new Y(); b.print()
12、; class Y implements B
13、 /覆寫父類接口中的方法print() public void print() &
14、#160; System.out.println("Hello Java!");
15、; 現(xiàn)在我們加上主方法進行測試哈abstract class A public abstract
16、;void fun(); interface B pub
17、lic void print(); class X extends A /覆寫父類fun()方法 &
18、#160; public void fun() B b = new Y(
19、); b.print(); class Y implem
20、ents B /覆寫父類接口中的方法print() &
21、#160; public void print()
22、160; System.out.println("Hello Java!"); public
23、 class Demo01 public static void main(String args)
24、0; A a = new X(); a.fun();
25、160; 證明一個抽象類中可以包含一個接口,之后在抽象類的子類中可以有選擇的是否實現(xiàn)抽象類中的接口。2、一個接口中能否包含一個抽象類呢?同上,都是可以選擇是否實現(xiàn)interface A public void fun(); ab
26、stract class B public abstract void print();
27、0; 下面我們寫上個子類,檢驗一下是否可以有選擇實現(xiàn)抽象類Binterface A public void fun(); abstr
28、act class B public abstract void print(); &
29、#160; class X implements A public void fun()
30、; 驗證可以哈下面覆寫抽象類B中print()方法interface A public void fun();
31、0; abstract class B public abstract void pr
32、int(); class X implements A public void fun()
33、0; new Y().print(); &
34、#160; class Y extends B public void print()
35、 System.out.println("Hello World!");
36、60; public class Demo02
37、0; public static void main(String args) A a = ne
38、w X(); a.fun(); 3、觀察以下的程序,驗證輸出結(jié)果abstract class A
39、; public A() this.print();&
40、#160; public abstract void print(); class B extends A
41、60; private int i = 30; public B(int i)
42、60; this.i = i; public void print()
43、; System.out.println("i = "+i);
44、160; public class Demo03 public static void main(String args)
45、 new B(50); 輸出結(jié)果為0哈,這與子類對象實例化過程有關(guān)哈回顧:子類對象的實例化過程 · 子類對象使用new關(guān)鍵字要調(diào)用構(gòu)造方法 · 調(diào)用構(gòu)造方
46、法時的順序:先去調(diào)用父類中的構(gòu)造方法(默認為無參構(gòu)造),之后再調(diào)用子類中的構(gòu)造方法。 · 調(diào)用構(gòu)造方法的目的:為其內(nèi)部的屬性初始化 · 子類中的屬性在沒有完成父類中的構(gòu)造方法之前,所有的內(nèi)容都是默認值,整型是“0” 。思考: 我們知道一個子類如果實現(xiàn)了一個接口則肯定要覆寫接口中的全部抽象方法。那問?是否可以采用一種方式,讓子類可以有選擇的去覆寫自己真正需要的方法。interface Door
47、0; /開門 public void openDoor(); /關(guān)門 p
48、ublic void closeDoor(); /維修 public void repairDoor(); /拆除
49、0; public void removeDoor(); /鎖門 public void lockDoor();
50、; class D implements Door /子類現(xiàn)在肯定要覆寫里面全部的抽象方法 矛盾點: · 子類不需要覆寫全部的方法 · 如果子類直接實現(xiàn)了接口則肯定要覆寫全部的方法 ·
51、解決:如果中間加入了一個過渡端呢? 接口 -> 過渡端 -> 子類 |- 此過渡端不應(yīng)該被直接使用。 -> 抽象類過渡端使用抽象類實現(xiàn)最合適,因為抽象類可以實現(xiàn)一個接口同時可以有一些抽象方法,并且不能直接被new關(guān)鍵字實例化。interface Door /開門 &
52、#160; public void openDoor(); /關(guān)門 public void closeDoor();
53、60; /維修 public void repairDoor(); /拆除 public
54、0;void removeDoor(); /鎖門 public void lockDoor(); abstract class DoorAdapter imple
55、ments Door /但是以下的方法雖然實現(xiàn)了,可是沒有具體的方法體 public void openDoor() &
56、#160; public void closeDoor() public void repairDoor() public void removeDoor()
57、160; public void lockDoor() class D extends DoorAdapter /子類現(xiàn)在肯定要覆寫里面全部的抽象方法
58、; /只需要打開門 public void openDoor()
59、160; System.out.println("開門"); public class Demo04
60、0; public static void main(String args) new D().openDoor(); &
61、#160; 此處是有選擇的在子類實現(xiàn)了所需要的方法。這種設(shè)計稱為Adapter(適配器設(shè)計) 4、模擬: · 張三 很老實 -> 李四,借10000000元,不還 · 張三 -> 討債公司 -> 李四 -> 還錢 張三和討債公司的目的 -> 還錢。/主題:討債
62、0; interface Subject /完成具體的操作 public void giveMe(); /真正
63、要討債的人 class RealSubject implements Subject public void giveMe()
64、0; System.out.println("還我滴Money"); /代理人 class Pr
65、oxySubject implements Subject private Subject sub = null; public ProxySubject(Subject sub) &
66、#160; this.sub = sub;
67、0; public void before() System.out.println("需要一些準備");
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2016高考政治二輪專題復(fù)習(xí)-專題七-國際社會及我國外交政策課件
- 2024年海南外國語職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2024年陜西省人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年河北軌道運輸職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2024年長治市中醫(yī)醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年畢節(jié)幼兒師范高等??茖W(xué)校高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2024年惠州城市職業(yè)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 中國消防指揮調(diào)度裝置行業(yè)市場競爭格局及投資前景研判報告
- 2024年天津藝術(shù)職業(yè)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 中國叔醋乳液行業(yè)市場現(xiàn)狀調(diào)查及未來趨勢研判報告
- 環(huán)衛(wèi)項目年終工作總結(jié)
- (高清版)DZT 0432-2023 煤炭與煤層氣礦產(chǎn)綜合勘查規(guī)范
- 郵政儲蓄銀行-客戶經(jīng)理(個人消費貸款)-試題+答案
- 中國專利獎申報要點
- 2024年大學(xué)試題(宗教學(xué))-佛教文化筆試歷年真題薈萃含答案
- 《中外美術(shù)鑒賞》課件西方美術(shù)鑒賞導(dǎo)論
- 中小學(xué)教師違反職業(yè)道德行為處理辦法
- 梁平法制圖規(guī)則及鋼筋翻樣講解
- 乙肝 丙肝培訓(xùn)課件
- 責(zé)任制整體護理護理
- 2024屆湖北省武漢實驗外國語學(xué)校數(shù)學(xué)七上期末統(tǒng)考模擬試題含解析
評論
0/150
提交評論