C# - Abstract Class & Abstract Method

一個 method 的組成包含:

  1. 宣告
  2. 內容 (實際執行方式)

abstract method

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

  1. abstract method 把實作的工作轉交給繼承的類別來定義。強迫衍生類別實作某些功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 private void button1_Click(object sender, EventArgs e)
{
Monster mon = new Slim();
Slime s = new Slime();
MessageBox.Show("" + mon.attack());

}

// base class
abstract class Monster
{
public abstract string attack();
}

// derivated class

class Slime:Monster
{
public override string attack()
{
return "小怪物正在攻擊";
}
}
  1. 問題:為什麼要在基底類別宣告 method 而不是直接在衍生類別撰寫方法?

如果先在基底類別宣告方法的時候,就可以使用基底類別建立的身分呼叫方法。但是如果沒有在基底類別宣告這個方法,就不能使用此種方式。換句話說, 透過使用 abstract method,就可以讓衍生類別具有共同行為,但是實際的做法則由各個類別自訂。這種宣告方式同時可以用基底類別的身分取得衍生類別的行為。

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

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2020 CYC'S BLOG All Rights Reserved.

UV : | PV :