2016年5月8日 星期日

小山的 C# 教學-第35課-Abstract Class & Abstract Method

本課簡介

本課目標為教導大家使用 Abstract Class 與 Abstract Method
當今天想要強迫某些衍生類別實作某些功能時
Abstract Method 就很符合需求
而 Abstract Class 又跟 Abstract Method 同進退
接下來就來看看是怎麼一回事吧!

教學影片

注意:影片有高畫質 720P 的選項,可以看得更清楚喔!




重點提示

1. C# 中的 method 主要分成兩個部分,宣告與內容。Abstract method 則是一種只有宣告,而沒有實作內容的一種特殊 method。

2. Abstract method 主要的目標是預先宣告 method,但是把實作的工作交給繼承的類別來做。

3. 透過使用 abstract method,就可以讓衍生類別具有共同行為,但是實際的做法則由各個類別自訂。

4. Abstract method 必須放在 abstract class 中,abstract class 是一種不能實體化 (不能被 new) 的 class。原因就在於 abstract method 並沒有定義內容,因此若被實體化出來,就無法執行任何動作。

相關資訊連結

MSDN - Abstract

https://msdn.microsoft.com/zh-tw/library/sf985hc5.aspx

6 則留言:

  1. 感謝小山大大的教學!!
    什麼時候再出新教學呢?

    回覆刪除
  2. 請問如果Monster不是Abstract class 可以實體化
    那 Monster A = new Slime;
    和 Slime A = new Slime;
    有甚麼差別呢? 還有他們的使用時機是?

    回覆刪除
    回覆
    1. 小山的教學平台
      小山的教學平台
      2 年前
      首先我想你應該有了解為甚麼可以寫
      Monster monster = new Slime();
      因為在物件導向中 Slime 你可以當成是一種 Monster
      所以你當然可以把 Slime 當成 Monster 來「使用」

      那這樣有甚麼好處?
      最常見的好處就是
      假設當你今天有一坨各式各樣的 Monster
      可能有 Slime, Dragon... 之類各種不同子類別
      但是你需要「統一」管理
      例如統一存在一個 Array 裡面

      你可以直接宣告一個 Monster 的 array
      而不要分別宣告 Slime 的 array,Dragon 的 array,然後分開存

      這種特性讓你在管理具有同一個父類別的物件時有極大的好處

      刪除