版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、18. 面向對象高級(06) 本季要點:講解抽象類與接口的關系。本季講解了java中關于抽象類與接口的具體區(qū)別,同時講解了兩者的一些其他聯(lián)系。之后講解了模板設計模式、代理設計模式,最后又重點強調了抽象類和接口之間的關系blog: 零基礎學JAVAJava SE面向對象部分-18.面向對象高級(06) 2009-02-08上季內容回顧:1、面向對象中接口與抽象類的具體應用。 可以通過對象的多態(tài)性,為父類實例化,之后一切的操作標準以父類為主。本季主要知識點:講解抽象類與接口的關系。1、一個抽象類中能否包含一個接口呢?abstract class A
2、60; public abstract void fun(); interface B
3、; public void print(); 我們來驗證測試下哈發(fā)現(xiàn)生成A$B.class,表示B作為A的內部接口,證明一個抽象類中可以包含一個內部接口。那怎么使用
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、觀察以下的程序,驗證輸出結果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); 輸出結果為0哈,這與子類對象實例化過程有關哈回顧:子類對象的實例化過程 · 子類對象使用new關鍵字要調用構造方法 · 調用構造方
46、法時的順序:先去調用父類中的構造方法(默認為無參構造),之后再調用子類中的構造方法。 · 調用構造方法的目的:為其內部的屬性初始化 · 子類中的屬性在沒有完成父類中的構造方法之前,所有的內容都是默認值,整型是“0” 。思考: 我們知道一個子類如果實現(xiàn)了一個接口則肯定要覆寫接口中的全部抽象方法。那問?是否可以采用一種方式,讓子類可以有選擇的去覆寫自己真正需要的方法。interface Door
47、0; /開門 public void openDoor(); /關門 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、解決:如果中間加入了一個過渡端呢? 接口 -> 過渡端 -> 子類 |- 此過渡端不應該被直接使用。 -> 抽象類過渡端使用抽象類實現(xiàn)最合適,因為抽象類可以實現(xiàn)一個接口同時可以有一些抽象方法,并且不能直接被new關鍵字實例化。interface Door /開門 &
52、#160; public void openDoor(); /關門 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)了所需要的方法。這種設計稱為Adapter(適配器設計) 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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版有關運輸合同模板集合
- 二零二五版辦公設備耗材行業(yè)規(guī)范制定與執(zhí)行合同3篇
- 2025年度企業(yè)信息化建設與網(wǎng)絡安全合同3篇
- 2024版智慧城市系統(tǒng)集成合同
- 2025年度集裝箱貨運代理業(yè)務合作伙伴管理協(xié)議3篇
- 2025不銹鋼室內門定制及安裝服務合同3篇
- 2025年度出納崗位競聘及考核聘用合同書3篇
- 2025年度汽車零部件生產(chǎn)商質量標準執(zhí)行協(xié)議3篇
- 二零二五年度科技公司兼職軟件開發(fā)人員聘用合同3篇
- 二零二五版股權分紅權轉讓補充協(xié)議3篇
- 【傳媒大學】2024年新營銷
- 乳腺癌的綜合治療及進展
- 【大學課件】基于BGP協(xié)議的IP黑名單分發(fā)系統(tǒng)
- 2025屆廣東省佛山市高三上學期普通高中教學質量檢測(一模)英語試卷(無答案)
- 自身免疫性腦炎課件
- 人力資源管理各崗位工作職責
- 信陽農(nóng)林學院《新媒體傳播學》2023-2024學年第一學期期末試卷
- 2024建筑公司年終工作總結(32篇)
- 信息安全意識培訓課件
- 公路工程標準施工招標文件(2018年版)
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蝕工程施工及驗收規(guī)范
評論
0/150
提交評論