Enviar pesquisa
Carregar
CH06:繼承與多型
•
0 gostou
•
303 visualizações
Justin Lin
Seguir
瞭解繼承目的 瞭解繼承與多型的關係 知道如何重新定義方法 認識java.lang.Object 簡介垃圾收集機制
Leia menos
Leia mais
Tecnologia
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 55
Baixar agora
Baixar para ler offline
Recomendados
認識 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
Recomendados
認識 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
使用 REPL 設定原始碼檔案編碼 基本模組與套件管理 認識 IDE 的使用
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
Justin Lin
Mais conteúdo relacionado
Mais de 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
使用 REPL 設定原始碼檔案編碼 基本模組與套件管理 認識 IDE 的使用
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
Justin Lin
Mais de Justin Lin
(20)
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起步走
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
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
Baixar agora