C#_Inheritance(繼承性)

我們來撰寫兩個  class


以遊戲角度作切入

在之前我們已經有練習寫過   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 的 屬性  及  行為。


















留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header