Submit Search
Upload
CH07:介面與多型
•
0 likes
•
239 views
Justin Lin
Follow
使用介面定義行為 瞭解介面的多型操作 利用介面列舉常數 利用enum列舉常數
Read less
Read more
Technology
Report
Share
Report
Share
1 of 62
Download now
Download to read offline
Recommended
使用介面定義行為 瞭解介面的多型操作 利用介面列舉常數 利用enum列舉常數
介面與多型
介面與多型
Justin Lin
認識 Spring Boot 認識 Spring Tool Suite 遷移微網誌至 Spring Boot
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
區別程式庫與框架 逐步善用 Spring MVC 簡介 Thymeleaf 模版 使用 Spring Security
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
使用 Gradle 結合 Gradle 與 IDE 認識相依注入 使用 Spring 核心
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
寄送純文字郵件 寄送 HTML 郵件 寄送附檔郵件
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
了解 Java EE 安全概念與名詞 使用容器基本驗證與表單驗 使用 HTTPS 保密資料傳輸
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
了解 JDBC 架構 使用基本的 JDBC 透過 JNDI 取得DataSource 在 Web 應用程式整合資料庫
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
使用 Tag File 自訂標籤 使用 Simple Tag 自訂標籤 使用 Tag 自訂標籤
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
Recommended
使用介面定義行為 瞭解介面的多型操作 利用介面列舉常數 利用enum列舉常數
介面與多型
介面與多型
Justin Lin
認識 Spring Boot 認識 Spring Tool Suite 遷移微網誌至 Spring Boot
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
區別程式庫與框架 逐步善用 Spring MVC 簡介 Thymeleaf 模版 使用 Spring Security
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
使用 Gradle 結合 Gradle 與 IDE 認識相依注入 使用 Spring 核心
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
寄送純文字郵件 寄送 HTML 郵件 寄送附檔郵件
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
了解 Java EE 安全概念與名詞 使用容器基本驗證與表單驗 使用 HTTPS 保密資料傳輸
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
了解 JDBC 架構 使用基本的 JDBC 透過 JNDI 取得DataSource 在 Web 應用程式整合資料庫
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
使用 Tag File 自訂標籤 使用 Simple Tag 自訂標籤 使用 Tag 自訂標籤
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
了解何謂 JSTL 使用 JSTL 核心標籤庫 使用 JSTL 格式標籤庫 使用 JSTL XML 標籤庫 使用 JSTL 函式標籤庫
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
了解 JSP 生命週期 使用 JSP 語法元素 使用 JSP 標準標籤 使用運算式語言(EL) 自訂 EL 函式
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
了解 Servlet 生命週期 使用 ServletConfig 與ServletContext 使用 PushBuilder 各種傾聽器的使用 繼承 HttpFilter 實作過濾器
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
了解會話管理基本原理 使用 Cookie 類別 使用 HttpSession 會話管理 了解容器會話管理原理
Ch04 會話管理
Ch04 會話管理
Justin Lin
取得請求參數與標頭 處理中文字元請求與回應 設定與取得請求範圍屬性 使用轉發、包含、重新導向
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
開發環境準備與使用 了解 Web 應用程式架構 Servlet 撰寫與部署設定 了解 URI 模式對應 使用 web-fragement.xml
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
認識 HTTP 基本特性 了解何為 URI 編碼 認識 Web 容器角色 了解 Servlet 與 JSP 的關係 認識 MVC/Model 2
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
14. 進階主題
14. 進階主題
Justin Lin
認識並行、平行與非同步 使用 threading 模組 使用 multiprocessing 模組 使用 concurrent.futures模組 運用 async、await 與 asyncio
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
使用 pdb 模組除錯 對程式進行單元測試 使用 timeit 評測程式片段 使用 cProfile(profile)察看評測數據
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
處理日期與時間 認識日誌的使用 運用規則表示式 管理檔案與目錄 URL 處理
11. 常用內建模組
11. 常用內建模組
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
認識 hashable、iterable、orderable 對物件進行排序 認識群集架構 運用 collections 模組 運用 collections.abc 模組
9. 資料結構
9. 資料結構
Justin Lin
使用 open()函式 使用 stdin、stdout、stderr 認識檔案描述器 認識 io 模組
8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
使用 try、except 處理例外 認識例外繼承架構 認識 raise 使用時機 運用 finally 清除資源 使用 with as 管理資源
7. 例外處理
7. 例外處理
Justin Lin
瞭解繼承目的 認識鴨子定型 重新定義方法 認識 object 建立、尋找文件資源 泛型入門
6. 類別的繼承
6. 類別的繼承
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
5. 從模組到類別
5. 從模組到類別
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
4. 流程語法與函式
4. 流程語法與函式
Justin Lin
認識內建型態 學習字串格式化 瞭解變數與運算子 運用切片運算
3.型態與運算子
3.型態與運算子
Justin Lin
選擇 2.x 還是 3.x? 初識 Python 資源 認識 Python 實作 建立 Python 環境
1. Python起步走
1. Python起步走
Justin Lin
More Related Content
More from Justin Lin
了解何謂 JSTL 使用 JSTL 核心標籤庫 使用 JSTL 格式標籤庫 使用 JSTL XML 標籤庫 使用 JSTL 函式標籤庫
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
了解 JSP 生命週期 使用 JSP 語法元素 使用 JSP 標準標籤 使用運算式語言(EL) 自訂 EL 函式
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
了解 Servlet 生命週期 使用 ServletConfig 與ServletContext 使用 PushBuilder 各種傾聽器的使用 繼承 HttpFilter 實作過濾器
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
了解會話管理基本原理 使用 Cookie 類別 使用 HttpSession 會話管理 了解容器會話管理原理
Ch04 會話管理
Ch04 會話管理
Justin Lin
取得請求參數與標頭 處理中文字元請求與回應 設定與取得請求範圍屬性 使用轉發、包含、重新導向
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
開發環境準備與使用 了解 Web 應用程式架構 Servlet 撰寫與部署設定 了解 URI 模式對應 使用 web-fragement.xml
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
認識 HTTP 基本特性 了解何為 URI 編碼 認識 Web 容器角色 了解 Servlet 與 JSP 的關係 認識 MVC/Model 2
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
14. 進階主題
14. 進階主題
Justin Lin
認識並行、平行與非同步 使用 threading 模組 使用 multiprocessing 模組 使用 concurrent.futures模組 運用 async、await 與 asyncio
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
使用 pdb 模組除錯 對程式進行單元測試 使用 timeit 評測程式片段 使用 cProfile(profile)察看評測數據
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
處理日期與時間 認識日誌的使用 運用規則表示式 管理檔案與目錄 URL 處理
11. 常用內建模組
11. 常用內建模組
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
認識 hashable、iterable、orderable 對物件進行排序 認識群集架構 運用 collections 模組 運用 collections.abc 模組
9. 資料結構
9. 資料結構
Justin Lin
使用 open()函式 使用 stdin、stdout、stderr 認識檔案描述器 認識 io 模組
8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
使用 try、except 處理例外 認識例外繼承架構 認識 raise 使用時機 運用 finally 清除資源 使用 with as 管理資源
7. 例外處理
7. 例外處理
Justin Lin
瞭解繼承目的 認識鴨子定型 重新定義方法 認識 object 建立、尋找文件資源 泛型入門
6. 類別的繼承
6. 類別的繼承
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
5. 從模組到類別
5. 從模組到類別
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
4. 流程語法與函式
4. 流程語法與函式
Justin Lin
認識內建型態 學習字串格式化 瞭解變數與運算子 運用切片運算
3.型態與運算子
3.型態與運算子
Justin Lin
選擇 2.x 還是 3.x? 初識 Python 資源 認識 Python 實作 建立 Python 環境
1. Python起步走
1. Python起步走
Justin Lin
More from Justin Lin
(20)
Ch07 使用 JSTL
Ch07 使用 JSTL
Ch06 使用 JSP
Ch06 使用 JSP
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch04 會話管理
Ch04 會話管理
Ch03 請求與回應
Ch03 請求與回應
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
14. 進階主題
14. 進階主題
13.並行、平行與非同步
13.並行、平行與非同步
12. 除錯、測試與效能
12. 除錯、測試與效能
11. 常用內建模組
11. 常用內建模組
10. 資料永續與交換
10. 資料永續與交換
9. 資料結構
9. 資料結構
8. open() 與 io 模組
8. open() 與 io 模組
7. 例外處理
7. 例外處理
6. 類別的繼承
6. 類別的繼承
5. 從模組到類別
5. 從模組到類別
4. 流程語法與函式
4. 流程語法與函式
3.型態與運算子
3.型態與運算子
1. Python起步走
1. Python起步走
CH07:介面與多型
1.
1
2.
介面與多型 學習目標 • 使用介面定義行為 • 瞭解介面的多型操作 •
利用介面列舉常數 • 利用enum列舉常數 2
3.
使用介面定義行為 • 海洋樂園,全部東西都會游泳 3
4.
4
5.
• 為什麼都是魚?人也會游泳啊! 5
6.
• Human類別繼承Fish...等一下!Human繼承 Fish? 6
7.
• 只能繼承一個父類別,更強化了「是一種」 關係的限制性 • 老闆突發奇想,想把海洋樂園變為海空樂園 •
FlyingFish同時繼承Fish跟Bird嗎? 7
8.
• 「全部東西」都會「游泳」,而不是「某種 東西」都會「游泳」 • 先前的設計方式只解決了「全部魚」都會「 游泳」,只要它是一種魚 8
9.
• 「全部東西」都會「游泳」,代表「游泳」 這個「行為」可以被全部東西「擁有」,而 不是「某種」東西專屬 9
10.
10
11.
11
12.
12
13.
13
14.
• 繼承會有「是一種」關係 • 實作介面則表示「擁有行為」然而不會有「 是一種」的關係 14
15.
行為的多型 • 可以通過編譯 15
16.
• 是否可通過編譯? • 加上扮演(Cast)語法: 16
17.
• 第二行編譯失敗: • 加上扮演語法: 17
18.
• 拋出ClassCastException錯誤: • 底下的例子也會出錯: 18
19.
• Java SE
10以後支援var 19
20.
• 寫個static的doSwim()方法,讓會游的東 西都游起來? 20
21.
• 如果「種類」很多怎麼辦? 21
22.
解決需求變化 • 什麼叫有彈性?何謂可維護? • 如果今天老闆突發奇想,想把海洋樂園變為 海空樂園 •
有的東西會游泳,有的東西會飛,有的東西 會游也會飛 22
23.
• 類別可以實作兩個以上的類別,也就是擁有 兩種以上的行為 23
24.
• 類別可以同時繼承某類別,並實作某些介面 24
25.
• 要讓會游的東西游泳 25
26.
26
27.
• 後續需求超過了既有架構預留之彈性 • 老闆又開口了:不是全部的人類都會游泳吧 !有的飛機只會飛,不能停在海上啊! 27
28.
• 不再讓Human實作Swimmer: 28
29.
• 游泳選手是一種人,並擁有Swimmer的行為 29
30.
• 有的飛機只會飛 30
31.
• Seaplane會在海上航行 31
32.
• 程式中的直昇機就只會飛 32
33.
• 大規模的程式中調整程式架構會有多麼麻煩 • 不好的架構下要修改程式,很容易牽一髮而 動全身 33
34.
• 老闆又想到了:水裡的話,將淺海游泳與深 海潛行分開好了! • 介面可以繼承自另一個介面 34
35.
35 • 一般的船可以在淺海航行:
36.
• 潛水航是一種船,可以在淺海游泳,也可以 在深海潛行 36
37.
37
38.
• 需求不斷變化,架構也有可能因此而修改 • 好的架構在修改時,其實也不會全部的程式 碼都被牽動 •
他說一個你改一個,也不是辦法 • 找個時間,好好跟老闆談談這個程式的需求 邊界到底在哪吧! 38
39.
介面語法細節 • 方法可宣告為public abstract •
可以省略public abstract: 39
40.
• 編譯器會自動加上public abstract 40
41.
• 從JDK8開始,interface的方法可以有限 地實作 • 可以定義常數 41
42.
42
43.
43
44.
• 只能定義public static
final列舉常數 44
45.
• 有兩個介面都定義了某方法 45
46.
• 程式面來說,不會有錯誤,照樣通過編譯: 46
47.
• Some與Other定義的execute()是否表示 不同的行為? • 如果表示不同的行為,那麼Service在實作 時,應該有不同的方法實作 •
那麼Some與Other的execute()方法,就 得在名稱上有所不同,Service在實作時才 可以有兩個不同的方法實作 47
48.
• 如果表示相同的行為,那可以定義一個父介 面,在當中定義execute()方法 48
49.
49
50.
匿名內部類別 50
51.
• Java SE
10支援var自動推斷區域變數型態 51
52.
• Some介面定義了doService()方法 52
53.
• 假設你打算開發多人連線程式,對每個連線 客戶端,都會建立Client物件封裝相關資訊 53
54.
• 可以將Client加入或移除的資訊封裝為 ClientEvent: 54
55.
• 如果有物件對Client加入ClientQueue有 興趣,可以實作這個介面: • 如何在ClientQueue新增或移除Client時 予以通知呢? 55
56.
56
57.
57
58.
58
59.
• 在JDK8出現前 59
60.
使用enum列舉常數 60
61.
61
62.
62
Download now