C#_Inheritance(繼承性)
我們來撰寫兩個 class
以遊戲角度作切入
在之前我們已經有練習寫過 user 玩家 的 class 了
我們可以先寫一個 怪物(敵人)的 class
通常怪物可能就是
會去攻擊(attack)
會受到傷害(injured)
可能還需要得到怪物的生命數值
一個遊戲可能還有一些村民或是市民去跟你說接下來的關卡任務
所以村民可能也會需要得知 生命值
也可能會受到怪物攻擊
村民一般 玩家移動過去會說些話 會和玩家進行一些對話
你會發現 我們有寫到 重複的 一些屬性 及 方法
在 Monstor 和 Villager 這兩個 class中
重複的程式碼會造成一些問題
假設我今天要更動一下 injured 這個 method
我就必須兩個 class中的程式碼都進行更新喔!!!
那如果這時 重複的程式碼 不只出現在這兩個class就可能
要去更動超多class 非常麻煩
而且可能有遺漏 就造成了 程式碼 出錯
此時 物件導向的 Inheritance(繼承性) 就派上用場了!!!!
Inheritance(繼承性)
可以讓物件繼承其他物件具有的屬性及行為。
現在我們知道 Monstor 、 Villager 這兩個 class都具有
下方重複的程式碼
我們在此新建一個 Class 叫做 Creature
將 重複的 程式碼 寫在 此
其他兩類就不要再重複寫 這部份了
若我們要將 Creature 這段重複的 屬性 讓 其他 Class 繼承
以 Villager 為例 若我們要讓 Villager 可以調用到 Creature 中的 method 及 property
我們就在 class Villager 後面 加入 冒號 Creature
這樣就可以讓 它具備這些屬性及方法了
在主程式中 你會發現當我創建好了 村民的物件時
我不僅可以調用 Villager物件中自定義的 方法
也可以 調用的到 Creature 中 的 GetHP
Villager 繼承了 Creature 這個 Class
因此 Villager 即可獲得Creature 的 屬性 及 行為。
以遊戲角度作切入
在之前我們已經有練習寫過 user 玩家 的 class 了
我們可以先寫一個 怪物(敵人)的 class
通常怪物可能就是
會去攻擊(attack)
會受到傷害(injured)
可能還需要得到怪物的生命數值
一個遊戲可能還有一些村民或是市民去跟你說接下來的關卡任務
所以村民可能也會需要得知 生命值
也可能會受到怪物攻擊
村民一般 玩家移動過去會說些話 會和玩家進行一些對話
你會發現 我們有寫到 重複的 一些屬性 及 方法
在 Monstor 和 Villager 這兩個 class中
重複的程式碼會造成一些問題
假設我今天要更動一下 injured 這個 method
我就必須兩個 class中的程式碼都進行更新喔!!!
那如果這時 重複的程式碼 不只出現在這兩個class就可能
要去更動超多class 非常麻煩
而且可能有遺漏 就造成了 程式碼 出錯
此時 物件導向的 Inheritance(繼承性) 就派上用場了!!!!
Inheritance(繼承性)
可以讓物件繼承其他物件具有的屬性及行為。
現在我們知道 Monstor 、 Villager 這兩個 class都具有
下方重複的程式碼
private int hp;
//取得生命值
public int GetHp()
{
return hp;
}
//受攻擊
public void injured(int injuredPoint)
{
hp -= injuredPoint;
}
我們在此新建一個 Class 叫做 Creature
將 重複的 程式碼 寫在 此
其他兩類就不要再重複寫 這部份了
若我們要將 Creature 這段重複的 屬性 讓 其他 Class 繼承
以 Villager 為例 若我們要讓 Villager 可以調用到 Creature 中的 method 及 property
我們就在 class Villager 後面 加入 冒號 Creature
這樣就可以讓 它具備這些屬性及方法了
在主程式中 你會發現當我創建好了 村民的物件時
我不僅可以調用 Villager物件中自定義的 方法
也可以 調用的到 Creature 中 的 GetHP
Villager 繼承了 Creature 這個 Class
因此 Villager 即可獲得Creature 的 屬性 及 行為。
留言
張貼留言