Enviar búsqueda
Cargar
Java SE 7 技術手冊投影片第 07 章 - 介面與多型
•
1 recomendación
•
2,052 vistas
Justin Lin
Seguir
Java SE 7 技術手冊
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 66
Descargar ahora
Descargar para leer sin conexión
Recomendados
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Justin Lin
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Justin Lin
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Justin Lin
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Justin Lin
Recomendados
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Justin Lin
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Justin Lin
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Justin Lin
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Justin Lin
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Justin Lin
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
Justin Lin
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Justin Lin
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Justin Lin
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Justin Lin
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00
Justin Lin
Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法
Justin Lin
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Justin Lin
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
Justin Lin
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Justin Lin
Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
Java SE 7 技術手冊 - 課後練習解答
Java SE 7 技術手冊 - 課後練習解答
Justin Lin
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Justin Lin
Más contenido relacionado
La actualidad más candente
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Justin Lin
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
Justin Lin
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Justin Lin
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Justin Lin
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Justin Lin
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00
Justin Lin
Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法
Justin Lin
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Justin Lin
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
Justin Lin
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Justin Lin
Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
La actualidad más candente
(20)
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 8 技術手冊第 15 章 - 通用API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Java Tutorial:Learn Java in 06:00:00
Java Tutorial:Learn Java in 06:00:00
Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Destacado
Java SE 7 技術手冊 - 課後練習解答
Java SE 7 技術手冊 - 課後練習解答
Justin Lin
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Justin Lin
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Justin Lin
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Justin Lin
Joda-Time & JSR 310 – Problems, Concepts and Approaches
Joda-Time & JSR 310 – Problems, Concepts and Approaches
Justin Lin
Java SE 8 技術手冊第 8 章 - 例外處理
Java SE 8 技術手冊第 8 章 - 例外處理
Justin Lin
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
Justin Lin
Spring 2.0 技術手冊目錄
Spring 2.0 技術手冊目錄
Justin Lin
Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型
Justin Lin
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Justin Lin
Destacado
(11)
Java SE 7 技術手冊 - 課後練習解答
Java SE 7 技術手冊 - 課後練習解答
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Joda-Time & JSR 310 – Problems, Concepts and Approaches
Joda-Time & JSR 310 – Problems, Concepts and Approaches
Java SE 8 技術手冊第 8 章 - 例外處理
Java SE 8 技術手冊第 8 章 - 例外處理
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
Spring 2.0 技術手冊目錄
Spring 2.0 技術手冊目錄
Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Similar a Java SE 7 技術手冊投影片第 07 章 - 介面與多型
我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術
Li Hsuan Hung
介面與多型
介面與多型
Justin Lin
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
yang alex
深度學習(Deep learning)概論- 使用 SAS EM 實做
深度學習(Deep learning)概論- 使用 SAS EM 實做
SAS TW
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
Dahui Feng
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
Miles Chou
Java SE 8 技術手冊第 7 章 - 介面與多型
Java SE 8 技術手冊第 7 章 - 介面與多型
Justin Lin
Duck Typing and Multiple Inheritance
Duck Typing and Multiple Inheritance
Sway Wang
無瑕的程式碼 Clean Code 心得分享
無瑕的程式碼 Clean Code 心得分享
Win Yu
vmarket in action
vmarket in action
Appleseedez Zeng
A brief introduction to Machine Learning
A brief introduction to Machine Learning
Wen-Tien Chang
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Justin Lin
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
Chieh (Jack) Yu
Ruby Rails 老司機帶飛
Ruby Rails 老司機帶飛
Wen-Tien Chang
Javascript 培训第一节 分享·学习javascript过程
Javascript 培训第一节 分享·学习javascript过程
liziqi7
CH06:繼承與多型
CH06:繼承與多型
Justin Lin
李成银:前端编译平台
李成银:前端编译平台
taobao.com
前端编译平台
前端编译平台
Welefen Lee
Developer vs designer
Developer vs designer
Robert Luo
对于大型语言模型的两种期待.pdf
对于大型语言模型的两种期待.pdf
xudongkang1985
Similar a Java SE 7 技術手冊投影片第 07 章 - 介面與多型
(20)
我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術
介面與多型
介面與多型
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
深度學習(Deep learning)概論- 使用 SAS EM 實做
深度學習(Deep learning)概論- 使用 SAS EM 實做
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
尼古丁加咖啡因,不瞌睡的简报設計模式 (Caffeine+Nicotine)
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
Java SE 8 技術手冊第 7 章 - 介面與多型
Java SE 8 技術手冊第 7 章 - 介面與多型
Duck Typing and Multiple Inheritance
Duck Typing and Multiple Inheritance
無瑕的程式碼 Clean Code 心得分享
無瑕的程式碼 Clean Code 心得分享
vmarket in action
vmarket in action
A brief introduction to Machine Learning
A brief introduction to Machine Learning
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
Ruby Rails 老司機帶飛
Ruby Rails 老司機帶飛
Javascript 培训第一节 分享·学习javascript过程
Javascript 培训第一节 分享·学习javascript过程
CH06:繼承與多型
CH06:繼承與多型
李成银:前端编译平台
李成银:前端编译平台
前端编译平台
前端编译平台
Developer vs designer
Developer vs designer
对于大型语言模型的两种期待.pdf
对于大型语言模型的两种期待.pdf
Más de Justin Lin
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
Ch04 會話管理
Ch04 會話管理
Justin Lin
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
14. 進階主題
14. 進階主題
Justin Lin
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
11. 常用內建模組
11. 常用內建模組
Justin Lin
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
9. 資料結構
9. 資料結構
Justin Lin
Más de Justin Lin
(20)
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Ch12 Spring 起步走
Ch12 Spring 起步走
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Ch09 整合資料庫
Ch09 整合資料庫
Ch08 自訂標籤
Ch08 自訂標籤
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. 資料結構
Java SE 7 技術手冊投影片第 07 章 - 介面與多型
1.
2.
CHAPTER 7 • 介面與多型
學習目標 • 使用介面定義行為 • 瞭解介面的多型操作 • 利用介面列舉常數 • 利用enum列舉常數
3.
介面定義行為 • 老闆今天想開發一個海洋樂園遊戲,當中所
有東西都會游泳 … • 剛學過繼承?
4.
介面定義行為
5.
介面定義行為
6.
介面定義行為 • 老闆說話了,為什麼都是魚?人也會游泳啊!
怎麼沒寫? • 於是你就再定義Human類別繼承Fish...等一 下!…
7.
介面定義行為 • Java中只能繼承一個父類別,所以更強化了
「是一種」關係的限制性 • 如果今天老闆突發奇想,想把海洋樂園變為 海空樂園,有的東西會游泳,有的東西會飛, 有的東西會游也會飛 …
8.
介面定義行為 • 老闆今天想開發一個海洋樂園遊戲,當中所
有東西都會游泳。「所有東西」都會「游 泳」,而不是「某種東西」都會「游泳」 • 「所有東西」都會「游泳」,代表了「游泳」 這個「行為」可以被所有東西擁有,而不是 「某種」東西專屬
9.
介面定義行為 • 對於「定義行為」,在Java中可以使用
interface關鍵字定義
10.
介面定義行為 • 物件若想擁有Swimmer定義的行為,就必須
實作Swimmer介面
11.
介面定義行為 • 類別要實作介面,必須使用implements關
鍵字,實作某介面時,對介面中定義的方法 有兩種處理方式 – 實作介面中定義的方法 – 再度將該方法標示為abstract
12.
介面定義行為 • Anemonefish、Shark與Piranha繼承
Fish • 如果Human要能游泳呢?
13.
介面定義行為 • Submarine也有Swimmer的行為:
14.
介面定義行為
15.
介面定義行為 • 繼承會有「是一種」關係,實作介面則表示
「擁有行為」,但不會有「是一種」的關係
16.
行為的多型 • 再來當編譯器,看看哪些是合法的多型語法
17.
行為的多型 • 底下的程式碼是否可通過編譯? • 加上扮演(Cast)語法,編譯器別再囉嗦:
18.
行為的多型 • 底下的程式片段編譯失敗: • 如果加上扮演語法:
19.
行為的多型 • 下面例子就會拋出ClassCastException
錯誤: • 底下的例子也會出錯:
20.
行為的多型 • 寫個static的swim()方法,讓會游的東西
都游起來 • 在不會使用介面多型語法時,也許會寫下:
21.
行為的多型 • 問題是,如果「種類」很多怎麼辦?
22.
解決需求變化 • 寫程式要有彈性,要有可維護性!那麼什麼
叫有彈性?何謂可維護? • 最簡單的定義開始:如果增加新的需求,原 有的程式無需修改,只需針對新需求撰寫程 式,那就是有彈性、具可維護性的程式。
23.
解決需求變化 • 如果今天老闆突發奇想,想把海洋樂園變為
海空樂園,有的東西會游泳,有的東西會飛, 有的東西會游也會飛,那麼現有的程式可以 應付這個需求嗎?
24.
解決需求變化 • 使用interface定義了Flyer介面:
25.
解決需求變化
26.
解決需求變化
27.
解決需求變化 • 如果現在要讓所有會游的東西游泳,那麼
7.1.1節中的doSwim()方法就可滿足需求了
28.
解決需求變化 • 就滿足目前需求來說,你所作的就是新增程
式碼來滿足需求,但沒有修改舊有既存的程 式碼,你的程式確實擁有某種程度的彈性與 可維護性
29.
解決需求變化 • 原有程式架構也許確實可滿足某些需求,但
有些需求也可能超過了原有架構預留之彈性 • 一開始要如何設計才會有彈性,是必須靠經 驗與分析判斷 • 不用為了保有程式彈性的彈性而過度設計, 因為過大的彈性表示過度預測需求,有的設 計也許從不會遇上事先假設的需求
30.
解決需求變化 • 也許你預先假設會遇上某些需求而設計了一
個介面,但從程式開發至生命週期結束,該 介面從未被實作過,或者僅有一個類別實作 過該介面,那麼該介面也許就不必存在,你 事先的假設也許就是過度預測需求
31.
解決需求變化 • 事先的設計也有可能因為需求不斷增加,而
超出原本預留之彈性 • 老闆又開口了:不是所有的人都會游泳啊! 有的飛機只會飛,不能停在海上啊! …
32.
解決需求變化
33.
解決需求變化
34.
解決需求變化
35.
解決需求變化
36.
解決需求變化
37.
解決需求變化 • 這一連串的修改,都是為了調整程式架構,
這只是個簡單的示範,想像一下,在更大規 模的程式中調整程式架構會有多麼麻煩,而 且 ….
38.
解決需求變化 • 也許老闆又想到了:水裡的話,將淺海游泳
與深海潛行分開好了! …
39.
解決需求變化
40.
解決需求變化
41.
解決需求變化 • 需求不斷變化,架構也有可能因此而修改,
好的架構在修改時,其實也不會全部的程式 碼都被牽動,這就是設計的重要性
42.
解決需求變化
43.
解決需求變化 • 過像這位老闆無止境地在擴張需求,他說一
個你改一個,也不是辦法,找個時間,好好 跟老闆談談這個程式的需求邊界到底在哪 吧! …
44.
介面的預設 • 在Java中,使用interface來定義抽象的行
為外觀,方法要宣告為public abstract, 無需且不能有實作
45.
介面的預設 • 認證考試上經常會出這個題目: • 「請問你執行結果為何?」這個問題本身就
是個陷阱,根本無法編譯成功 …
46.
介面的預設 • 在interface中,可以定義常數:
47.
48.
介面的預設 • 想想看,如果將上面這個程式改為以下,哪
個在維護程式時比較清楚呢?
49.
介面的預設 • 在interface中,也只能定義public
static final的列舉常數
50.
介面的預設 • 在介面中列舉常數,一定要使用=指定值,否
則就會編譯錯誤:
51.
介面的預設 • 如果有兩個介面都定義了某方法,而實作兩
個介面的類別會怎樣嗎?
52.
介面的預設
53.
介面的預設 • 在設計上,你要思考一下:Some與Other定
義的execute()是否表示不同的行為? • 如果表示相同的行為,那可以定義一個父介 面…
54.
匿名內部類別 • 經常會有臨時繼承某個類別或實作某個介面
並建立實例的需求,由於這類子類別或介面 實作類別只使用一次,不需要為這些類別定 義名稱 …
55.
匿名內部類別
56.
匿名內部類別 • 假設你打算開發多人連線程式,對每個連線
客戶端,都會建立Client物件封裝相關資訊:
57.
匿名內部類別 • 可以將Client加入或移除的資訊包裝為
ClentEvent:
58.
匿名內部類別 • 可以定義ClientListener介面,如果有物
件對Client加入ClientQueue有興趣,可 以實作這個介面:
59.
60.
匿名內部類別
61.
匿名內部類別 • 如果要在匿名內部類別中存取區域變數,則
該區域變數必須是final,否則會發生編譯 錯誤:
62.
匿名內部類別 • 必須宣告arrs為final才可以通過編譯:
63.
使用enum列舉常數 • 參數接受的是int型態,這表你可以傳入任
何的int值,因此不得已地使用default, 以處理執行時期傳入非定義範圍的int值
64.
使用enum列舉常數 • 從JDK5之後新增了enum語法,可用於定義
列舉常數:
65.
使用enum列舉常數
66.
使用enum列舉常數
Descargar ahora