SlideShare a Scribd company logo
Submit Search
Upload
CH06:繼承與多型
Report
Share
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
•
0 likes
•
298 views
1
of
55
CH06:繼承與多型
•
0 likes
•
298 views
Report
Share
Download Now
Download to read offline
Technology
瞭解繼承目的 瞭解繼承與多型的關係 知道如何重新定義方法 認識java.lang.Object 簡介垃圾收集機制
Read more
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
Recommended
Ch14 簡介 Spring Boot by
Ch14 簡介 Spring Boot
Justin Lin
872 views
•
22 slides
Ch13 整合 Spring MVC/Security by
Ch13 整合 Spring MVC/Security
Justin Lin
280 views
•
58 slides
Ch12 Spring 起步走 by
Ch12 Spring 起步走
Justin Lin
274 views
•
31 slides
Ch11 簡介 JavaMail by
Ch11 簡介 JavaMail
Justin Lin
157 views
•
8 slides
Ch10 Web 容器安全管理 by
Ch10 Web 容器安全管理
Justin Lin
153 views
•
30 slides
Ch09 整合資料庫 by
Ch09 整合資料庫
Justin Lin
233 views
•
92 slides
More Related Content
More from Justin Lin
Ch06 使用 JSP by
Ch06 使用 JSP
Justin Lin
250 views
•
83 slides
Ch05 Servlet 進階 API、過濾器與傾聽器 by
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
204 views
•
69 slides
Ch04 會話管理 by
Ch04 會話管理
Justin Lin
238 views
•
30 slides
Ch03 請求與回應 by
Ch03 請求與回應
Justin Lin
236 views
•
73 slides
Ch02 撰寫與設定 Servlet by
Ch02 撰寫與設定 Servlet
Justin Lin
352 views
•
37 slides
CH1. 簡介 Web 應用程式 by
CH1. 簡介 Web 應用程式
Justin Lin
1.2K views
•
55 slides
More from Justin Lin
(20)
Ch06 使用 JSP by Justin Lin
Ch06 使用 JSP
Justin Lin
•
250 views
Ch05 Servlet 進階 API、過濾器與傾聽器 by Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
•
204 views
Ch04 會話管理 by Justin Lin
Ch04 會話管理
Justin Lin
•
238 views
Ch03 請求與回應 by Justin Lin
Ch03 請求與回應
Justin Lin
•
236 views
Ch02 撰寫與設定 Servlet by Justin Lin
Ch02 撰寫與設定 Servlet
Justin Lin
•
352 views
CH1. 簡介 Web 應用程式 by Justin Lin
CH1. 簡介 Web 應用程式
Justin Lin
•
1.2K views
14. 進階主題 by Justin Lin
14. 進階主題
Justin Lin
•
406 views
13.並行、平行與非同步 by Justin Lin
13.並行、平行與非同步
Justin Lin
•
238 views
12. 除錯、測試與效能 by Justin Lin
12. 除錯、測試與效能
Justin Lin
•
153 views
11. 常用內建模組 by Justin Lin
11. 常用內建模組
Justin Lin
•
149 views
10. 資料永續與交換 by Justin Lin
10. 資料永續與交換
Justin Lin
•
156 views
9. 資料結構 by Justin Lin
9. 資料結構
Justin Lin
•
292 views
8. open() 與 io 模組 by Justin Lin
8. open() 與 io 模組
Justin Lin
•
245 views
7. 例外處理 by Justin Lin
7. 例外處理
Justin Lin
•
115 views
6. 類別的繼承 by Justin Lin
6. 類別的繼承
Justin Lin
•
166 views
5. 從模組到類別 by Justin Lin
5. 從模組到類別
Justin Lin
•
169 views
4. 流程語法與函式 by Justin Lin
4. 流程語法與函式
Justin Lin
•
188 views
3.型態與運算子 by Justin Lin
3.型態與運算子
Justin Lin
•
199 views
1. Python起步走 by Justin Lin
1. Python起步走
Justin Lin
•
664 views
2. 從 REPL 到 IDE by Justin Lin
2. 從 REPL 到 IDE
Justin Lin
•
234 views
CH06:繼承與多型
1.
1
2.
繼承與多型 學習目標 • 瞭解繼承目的 • 瞭解繼承與多型的關係 •
知道如何重新定義方法 • 認識java.lang.Object • 簡介垃圾收集機制 2
3.
繼承共同行為與實作 3
4.
• 重複在程式設計上,就是不好的訊號 4
5.
5
6.
多型與is-a • 子類別只能繼承一個父類別 • 有is-a的關係,中文稱為「是一種」的關係 –
SwordsMan是一種Role(SwordsMan is a Role) – Magician是一種Role(Magician is a Role) 6
7.
• 可以通過編譯: • 也可以通過編譯嗎? •
為何無法通過編譯呢? 7
8.
• 從=號右邊往左讀 – 右邊是不是一種左邊呢(右邊型態是不是左邊型 態的子類別)? 8
9.
• 以下編譯失敗: • 如果不想要編譯器囉嗦 9
10.
• 明確要求編譯器別囉嗦了,編譯器就讓這段 程式碼通過編譯了,不過後果得自行負責! 10
11.
• 編譯可以成功,但執行時期會出錯: 11
12.
• 以下編譯成功,執行也沒問題: • 以下程式片段會編譯失敗: 12
13.
• 以下程式片段編譯成功,執行時也沒問題: • 以下程式片段編譯成功,但執行時拋出 ClassCastException: 13
14.
• 設計static方法,顯示所有角色的血量! 14
15.
15 • 多型?使用單一介面操作多種型態的物件!
16.
重新定義實作 • 請設計static方法,可以播放角色攻擊動畫 16
17.
• 將fight()方法提昇至Role類別中定義: • 重新定義(Override) 17
18.
18
19.
19
20.
20
21.
• 如果疏忽打錯字了: 21
22.
抽象方法、抽象類別 • Role的fight()方法沒有撰寫程式碼 22
23.
• 子類別若繼承抽象類別: – 繼續標示該方法為abstract –
實作抽象方法 23
24.
protected成員 24
25.
25
26.
26
27.
27
28.
• Role類別原本就定義了toString()方法: 28
29.
29
30.
• 對於父類別的方法權限,只能擴大不能縮小 30
31.
• 預設會呼叫父類別中無參數建構式 31
32.
• 想執行父類別中某建構式,可使用super() 32
33.
33
34.
34
35.
• 編譯器會在沒有撰寫任何建構式時,自動加 入無參數預設建構式(Default constructor) •
如果自行定義了建構式,就不會自動加入任 何建構式了。 35
36.
final關鍵字 • 在指定變數值之後,若不想改變值,可以在 宣告變數時加上final限定 • 若物件資料成員被宣告為final,沒有明確 使用=指定值,就表示延遲物件成員值的指定 •
若class使用了final關鍵字限定,就表示 這個類別在繼承體系中是最後一個,不會再 有子類別,也就是不能被繼承 36
37.
37
38.
• 定義方法時可以限定為final,表示子類別 不可以重新定義final方法 38
39.
java.lang.Object • 子類別只能繼承一個父類別 39
40.
• 物件一定「是一種」Object 40
41.
41
42.
42
43.
43
44.
44
45.
重新定義toString() • Object的toString()預設定義為: • System.out.print()等方法,就會呼叫 toString() 45
46.
重新定義equals() • Object類別就有定義的方法: 46
47.
47
48.
• instanceof檢查左運算元型態是否在右運算 元型態的繼承架構 • 實作equals()時通常也會實作hashCode() 48
49.
關於垃圾收集 49
50.
50
51.
51
52.
52
53.
再看抽象類別 • 開發一個猜數字遊戲 53
54.
• 老闆皺著眉頭說:「我有說要在文字模式下 執行遊戲嗎?」 54
55.
55