SlideShare a Scribd company logo
CHAPTER 6
• 繼承與多型
             學習目標
             •   瞭解繼承目的
             •   瞭解繼承與多型的關係
             •   知道如何重新定義方法
             •   認識java.lang.Object
             • 簡介垃圾收集機制
繼承共同行為
• 假設你在正開發一款RPG(Role-playing game)
  遊戲,一開始設定的角色有劍士與魔法師…
繼承共同行為
• 如果要改進,可以把相同的程式碼提昇(Pull
  up)為父類別…
繼承共同行為
• 接著SwordsMan可以如下繼承Role:
繼承共同行為
• Magician也可以如下定義繼承Role類別:
繼承共同行為
• 如何看出確實有繼承了呢?
多型與is-a
• 子類別只能繼承一個父類別
• 繼承可避免類別間重複的行為定義
• 子類別與父類別間會有is-a的關係
 – SwordsMan是一種Role(SwordsMan is a
   Role)
 – Magician是一種Role(Magician is a Role)
多型與is-a
• 要開始理解多型(Polymorphism),必須先
  知道你操作的物件是「哪一種」東西
• 可以通過編譯:
多型與is-a
• 以下的程式片段也可以通過編譯?



• 以下的程式片段為何無法通過編譯呢?
多型與is-a
• 將自己當作編譯器,從=號右邊往左讀:右邊
  是不是一種左邊呢(右邊型態是不是左邊型
  態的子類別)?
多型與is-a
• 以下編譯失敗:



• 以下的程式片段是否可以通過編譯:
多型與is-a
• 如果你不想要編譯器囉嗦,可以叫它住嘴:



• 執行時期並不會出錯
多型與is-a
• 以下的程式片段編譯可以成功:



• 執行時期發生錯誤
多型與is-a
• 以下編譯成功,執行也沒問題:



• 以下程式片段會編譯失敗:
多型與is-a
• 以下程式片段編譯成功,執行時也沒問題:




• 以下程式片段編譯成功,但執行時拋出
  ClassCastException:
多型與is-a
• 好像只是在玩弄語法?
• 設計static方法,顯示所有角色的血量 …
多型與is-a
• 重載方法的運用



• 如果有一百個角色呢?重載出一百個方法?
多型與is-a
• 這些角色都是一種Role
多型與is-a
• 什麼叫多型?以抽象講法解釋,就是使用單
  一介面操作多種型態的物件!
• 若用以上的範例來理解,在showBlood()
  方法中,既可以透過Role型態操作
  SwordsMan物件,也可以透過Role型態操
  作Magician物件。
重新定義行為
• 請設計static方法,可以播放角色攻擊動
  畫…
重新定義行為
• 對drawFight()方法而言,只知道傳進來
  的會是一種Role物件,所以編譯器也只能檢
  查你呼叫的方法,Role是不是有定義
• 仔細觀察一下SwordsMan與Magician的
  fight()方法的方法簽署(method
  signature) …
重新定義行為
• 將fight()方法提昇至Role類別中定義:
重新定義行為
重新定義行為
• 如果傳入fight()的是SwordsMan,role
  參數參考的就是SwordsMan實例,操作的就
  是SwordsMan上的方法定義:
重新定義行為
• 如果傳入fight()的是Magician,role參
  數參考的就是Magician實例,操作的就是
  Magician上的方法定義:
重新定義行為
• 在重新定義父類別中某個方法時,子類別必
  須撰寫與父類別方法中相同的簽署
• 如果疏忽打錯字了…
重新定義行為
• 在JDK5之後支援標註(Annotation)
• @Override要求編譯器檢查,該方法是不是
  真的重新定義了父類別中某個方法
抽象方法、抽象類別
• 上一個範例中Role類別的定義中,fight()
  方法區塊中實際上沒有撰寫任何程式碼
• 沒有任何方式強迫或提示子類別一定要實作
  fight()方法
抽象方法、抽象類別
• 如果某方法區塊中真的沒有任何程式碼實作,可以
  使用abstract標示該方法為抽象方法(Abstract
  method)




• 內含抽象方法的類別,一定要在class前標示
  abstract,如上例所示,這表示這是一個定義不
  完整的抽象類別(Abstract class)
抽象方法、抽象類別
• 如果嘗試用抽象類別建構實例,就會引發編
  譯錯誤:
抽象方法、抽象類別
• 子類別如果繼承抽象類別,對於抽象方法有
  兩種作法
 – 繼續標示該方法為abstract(該子類別因此也
   是個抽象類別,必須在class前標示abstract)
 – 實作抽象方法
• 兩個作法都沒實施,就會引發編譯錯誤:
protected成員
• 上一節的RPG遊戲來說,如果建立了一個角
  色,想顯示角色的細節,必須如下撰寫:
protected成員
• 可以在SwordsMan或Magician上定義個
  toString()方法,傳回角色的字串描述:
protected成員
• 客戶端就可以如下撰寫:




• 不過因為Role中的name、level與blood
  被定義為private,所以無法直接於子類別
  中存取,只能透過getName()、
  getLevel()、getBlood()來取得
protected成員
• 只想讓子類別可以直接存取name、level與
  blood的話,可以定義它們為protected:
protected成員
重新定義的細節
• 有時候重新定義方法時,並非完全不滿意父
  類別中的方法,只是希望在執行父類別中方
  法的前、後作點加工
重新定義的細節
• 如果想取得父類別中的方法定義,可以於呼
  叫方法前,加上super關鍵字
重新定義的細節
• 可以使用super關鍵字呼叫的父類別方法,
  不能定義為private
• 對於父類別中的方法權限,只能擴大但不能
  縮小
 – 若原來成員public,子類別中重新定義時不可
   為private或protected
重新定義的細節
• 在JDK5之前…
重新定義的細節
• 在JDK5之後,重新定義方法時,如果返回型
  態是父類別中方法返回型態的子類別,也是
  可以通過編譯的,圖6.11的例子,在JDK5中
  並不會出現編譯錯誤
再看建構式
• 在建構子類別實例後,會先進行父類別定義
  的初始流程,再進行子類別中定義的初始流
  程
• 也就是建構子類別實例後,會先執行父類別
  建構式定義的流程,再執行子類別建構式定
  義的流程
再看建構式
• 如果子類別建構式中沒有指定執行父類別中
  哪個建構式,預設會呼叫父類別中無參數建
  構式
再看建構式
• 如果想執行父類別中某建構式,可以使用
  super()指定:
再看建構式
• 當你這麼撰寫時:
再看建構式
• 等於你這麼撰寫:
再看建構式
• 知道以下為什麼會編譯錯誤嗎?
再看final關鍵字
• 如果在指定變數值之後,就不想再改變變數
  值,可以在宣告變數時加上final限定
• 如果物件資料成員被宣告為final,但沒有
  明確使用=指定值,那表示延遲物件成員值的
  指定,在建構式執行流程中,一定要有對該
  資料成員指定值的動作
再看final關鍵字
• 如果class前使用了final關鍵字定義,那
  麼表示這個類別是最後一個了,不會再有子
  類別,也就是不能被繼承
 – String在定義時就限定為final
再看final關鍵字
• 打算繼承final類別,則會發生編譯錯誤:
再看final關鍵字
• 定義方法時,也可以限定該方法為final,
  這表示最後一次定義方法了,也就是子類別
  不可以重新定義final方法
 – java.lang.Object上有幾個final方法
再看final關鍵字
• 如果你嘗試在繼承父類別後,重新定義
  final方法,則會發生編譯錯誤:
java.lang.Object
• 定義類別時沒有使用extends關鍵字指定繼
  承任何類別,則繼承java.lang.Object
java.lang.Object
• Java中所有物件,一定「是一種」Object



• 如果有個需求是使用陣列收集各種物件,那
  該宣告為什麼型態呢?答案是Object[]!
java.lang.Object
• 以下定義的ArrayList類別,可以不限長度
  地收集物件:
java.lang.Object
java.lang.Object
java.lang.Object
• java.lang.Object是所有類別的頂層父
  類別
• Object上定義的方法,所有物件都繼承下來
  了,只要不是被定義為final的方法,都可
  以重新定義
java.lang.Object
java.lang.Object
• Object的toString()預設定義為:


• 6.2.1的範例中,SwordsMan等類別,是重新
  定義了toString()
• 許多方法若傳入物件,預設都會呼叫
  toString()
 – 例如System.out.print()等方法
java.lang.Object
• 6.2.1的這個程式片段:
java.lang.Object
• 在Java中要比較兩個物件的實質相等性,並
  不是使用==,而是透過equals()方法
• equals()方法是Object類別就定義的方法
java.lang.Object
• instanceof運算子可以用來判斷物件是否
  由某個類別建構,左運算元是物件,右運算
  元是類別
• 編譯器會檢查左運算元型態是否在右運算元
  型態的繼承架構
java.lang.Object
• 執行時期,並非只有左運算元物件為右運算
  元類別直接實例化才傳回true,只要左運算
  元型態是右運算元型態的子類型,
  instanceof也是傳回true
關於垃圾收集
• JVM有垃圾收集(Garbage Collection, GC)
  機制,收集到的垃圾物件所佔據的記憶體空
  間,會被垃圾收集器釋放
• 執行流程中,無法透過變數參考的物件,就
  是GC認定的垃圾物件
關於垃圾收集
• 假設你有一個類別:
關於垃圾收集
關於垃圾收集
關於垃圾收集
關於垃圾收集
再看抽象類別
• 開發一個猜數字遊戲 …




• 老闆皺著眉頭說:「我有說要在文字模式下
  執行這個遊戲嗎?」
再看抽象類別
再看抽象類別
再看抽象類別

More Related Content

What's hot

Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Justin Lin
 
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
 
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
 
Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法
Justin Lin
 
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Justin Lin
 
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
 
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行APIJava SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
 
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
 
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJava SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
 
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Justin Lin
 
Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型
Justin Lin
 
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDEJava SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Justin Lin
 
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Justin Lin
 
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行APIJava SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
 
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Justin Lin
 
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
 
2, object oriented programming
2, object oriented programming2, object oriented programming
2, object oriented programming
ted-xu
 
從模組到類別
從模組到類別從模組到類別
從模組到類別
Justin Lin
 
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
 
Java SE 7 技術手冊第二章草稿 - 從 JDK 到 IDE
Java SE 7 技術手冊第二章草稿 - 從 JDK 到 IDEJava SE 7 技術手冊第二章草稿 - 從 JDK 到 IDE
Java SE 7 技術手冊第二章草稿 - 從 JDK 到 IDE
Justin Lin
 

What's hot (20)

Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
 
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
 
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
 
Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法
 
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
 
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
 
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行APIJava SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
 
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
 
Java SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - LambdaJava SE 8 技術手冊第 12 章 - Lambda
Java SE 8 技術手冊第 12 章 - Lambda
 
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
 
Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型Java SE 8 技術手冊第 6 章 - 繼承與多型
Java SE 8 技術手冊第 6 章 - 繼承與多型
 
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDEJava SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
 
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
 
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行APIJava SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
 
Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理Java SE 7 技術手冊投影片第 08 章 - 例外處理
Java SE 7 技術手冊投影片第 08 章 - 例外處理
 
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
 
2, object oriented programming
2, object oriented programming2, object oriented programming
2, object oriented programming
 
從模組到類別
從模組到類別從模組到類別
從模組到類別
 
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
 
Java SE 7 技術手冊第二章草稿 - 從 JDK 到 IDE
Java SE 7 技術手冊第二章草稿 - 從 JDK 到 IDEJava SE 7 技術手冊第二章草稿 - 從 JDK 到 IDE
Java SE 7 技術手冊第二章草稿 - 從 JDK 到 IDE
 

Viewers also liked

Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Java SE 7 技術手冊投影片第 01 章 - Java平台概論Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Justin Lin
 
Java SE 7 技術手冊 - 課後練習解答
Java SE 7 技術手冊 - 課後練習解答Java SE 7 技術手冊 - 課後練習解答
Java SE 7 技術手冊 - 課後練習解答
Justin Lin
 
進階主題
進階主題進階主題
進階主題
Justin Lin
 
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Justin Lin
 
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Java SE 7 技術手冊第六章草稿 - 何謂繼承?Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Justin Lin
 
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Justin Lin
 
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器  - Tomcat 原始碼分析深入淺出 Web 容器  - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLServlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSPServlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMailServlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Justin Lin
 
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤
Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤
Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤
Justin Lin
 

Viewers also liked (15)

Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Java SE 7 技術手冊投影片第 01 章 - Java平台概論Java SE 7 技術手冊投影片第 01 章 - Java平台概論
Java SE 7 技術手冊投影片第 01 章 - Java平台概論
 
Java SE 7 技術手冊 - 課後練習解答
Java SE 7 技術手冊 - 課後練習解答Java SE 7 技術手冊 - 課後練習解答
Java SE 7 技術手冊 - 課後練習解答
 
進階主題
進階主題進階主題
進階主題
 
Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?Java SE 7 技術手冊第七章草稿 - 何謂介面?
Java SE 7 技術手冊第七章草稿 - 何謂介面?
 
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Java SE 7 技術手冊第六章草稿 - 何謂繼承?Java SE 7 技術手冊第六章草稿 - 何謂繼承?
Java SE 7 技術手冊第六章草稿 - 何謂繼承?
 
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
 
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器  - Tomcat 原始碼分析深入淺出 Web 容器  - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
 
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLServlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
 
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
 
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSPServlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
 
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMailServlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
 
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
 
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?Java SE 7 技術手冊第五章草稿 - 何謂封裝?
Java SE 7 技術手冊第五章草稿 - 何謂封裝?
 
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
 
Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤
Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤
Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤
 

Similar to Java SE 7 技術手冊投影片第 06 章 - 繼承與多型

CH06:繼承與多型
CH06:繼承與多型CH06:繼承與多型
CH06:繼承與多型
Justin Lin
 
Ecmascript
EcmascriptEcmascript
Ecmascript
jay li
 
Machine Learning ABC
Machine Learning ABCMachine Learning ABC
Machine Learning ABC
tonyblack42
 
3, operators
3, operators3, operators
3, operators
ted-xu
 
CH18:自訂泛型、列舉與標註
CH18:自訂泛型、列舉與標註CH18:自訂泛型、列舉與標註
CH18:自訂泛型、列舉與標註
Justin Lin
 
重构——关于可读性、原则和模式
重构——关于可读性、原则和模式重构——关于可读性、原则和模式
重构——关于可读性、原则和模式
cnfi
 
深度學習(Deep learning)概論- 使用 SAS EM 實做
深度學習(Deep learning)概論- 使用 SAS EM 實做深度學習(Deep learning)概論- 使用 SAS EM 實做
深度學習(Deep learning)概論- 使用 SAS EM 實做
SAS TW
 
3. java basics
3. java basics3. java basics
3. java basicsnetdbncku
 
Ruby Rails 老司機帶飛
Ruby Rails 老司機帶飛Ruby Rails 老司機帶飛
Ruby Rails 老司機帶飛
Wen-Tien Chang
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
Shengyou Fan
 
繼承與多型
繼承與多型繼承與多型
繼承與多型
Justin Lin
 
自訂泛型、列舉與標註
自訂泛型、列舉與標註自訂泛型、列舉與標註
自訂泛型、列舉與標註
Justin Lin
 
Java面试题集
Java面试题集Java面试题集
Java面试题集yiditushe
 
Refactoring with Patterns in PHP
Refactoring with Patterns in PHPRefactoring with Patterns in PHP
Refactoring with Patterns in PHP
Jace Ju
 
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
悦 温
 
Behavior+tree+ai lite
Behavior+tree+ai liteBehavior+tree+ai lite
Behavior+tree+ai lite勇浩 赖
 
# From statistics to ai
# From statistics to ai# From statistics to ai
# From statistics to ai
Terence Huang
 
TypeScript 綜合格鬥技
TypeScript 綜合格鬥技TypeScript 綜合格鬥技
TypeScript 綜合格鬥技
Will Huang
 
Duck Typing and Multiple Inheritance
Duck Typing and Multiple InheritanceDuck Typing and Multiple Inheritance
Duck Typing and Multiple Inheritance
Sway Wang
 

Similar to Java SE 7 技術手冊投影片第 06 章 - 繼承與多型 (20)

CH06:繼承與多型
CH06:繼承與多型CH06:繼承與多型
CH06:繼承與多型
 
Ecmascript
EcmascriptEcmascript
Ecmascript
 
Machine Learning ABC
Machine Learning ABCMachine Learning ABC
Machine Learning ABC
 
3, operators
3, operators3, operators
3, operators
 
CH18:自訂泛型、列舉與標註
CH18:自訂泛型、列舉與標註CH18:自訂泛型、列舉與標註
CH18:自訂泛型、列舉與標註
 
重构——关于可读性、原则和模式
重构——关于可读性、原则和模式重构——关于可读性、原则和模式
重构——关于可读性、原则和模式
 
深度學習(Deep learning)概論- 使用 SAS EM 實做
深度學習(Deep learning)概論- 使用 SAS EM 實做深度學習(Deep learning)概論- 使用 SAS EM 實做
深度學習(Deep learning)概論- 使用 SAS EM 實做
 
3. java basics
3. java basics3. java basics
3. java basics
 
Excel VBA
Excel VBAExcel VBA
Excel VBA
 
Ruby Rails 老司機帶飛
Ruby Rails 老司機帶飛Ruby Rails 老司機帶飛
Ruby Rails 老司機帶飛
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
 
繼承與多型
繼承與多型繼承與多型
繼承與多型
 
自訂泛型、列舉與標註
自訂泛型、列舉與標註自訂泛型、列舉與標註
自訂泛型、列舉與標註
 
Java面试题集
Java面试题集Java面试题集
Java面试题集
 
Refactoring with Patterns in PHP
Refactoring with Patterns in PHPRefactoring with Patterns in PHP
Refactoring with Patterns in PHP
 
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
 
Behavior+tree+ai lite
Behavior+tree+ai liteBehavior+tree+ai lite
Behavior+tree+ai lite
 
# From statistics to ai
# From statistics to ai# From statistics to ai
# From statistics to ai
 
TypeScript 綜合格鬥技
TypeScript 綜合格鬥技TypeScript 綜合格鬥技
TypeScript 綜合格鬥技
 
Duck Typing and Multiple Inheritance
Duck Typing and Multiple InheritanceDuck Typing and Multiple Inheritance
Duck Typing and Multiple Inheritance
 

More from Justin Lin

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSP
Justin Lin
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
Justin Lin
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
Justin Lin
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題
Justin Lin
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
Justin Lin
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
Justin Lin
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構
Justin Lin
 

More from Justin Lin (20)

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSP
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構
 

Java SE 7 技術手冊投影片第 06 章 - 繼承與多型