2015年11月6日 星期五

C# - 覆寫(Override)

學習重點:
  • 經由覆寫可以更改繼承到的方法
  • 可以使用Base Class的變數來存取繼承class的物件
  • 被override的方法須加上virtual
  • override的方法其名稱與參數型別都要跟被override的相同

主程式  : 
        private void button1_Click(object sender, EventArgs e)
        {
            Player p = new Player("勇者");
            Monster m = new Monster("史萊姆");
            Villager v = new Villager("村民");

            Creature c = m;
           
            string message1 = v.attack(m);
            string message2 = c.move(); //能以Creature的身份呼叫Monster的方法

            MessageBox.Show(message1 + "\n" + message2);

        }

Creature 類別  :
    class Creature
    {
        public string name;

        public virtual string move() //加了virtual的方法才可被覆寫
        {
            return name + "向前走";
        }
       
        public virtual string attack(Creature target) //加了virtual的方法才可被覆寫
        {
            return name + "攻擊了" + target.name;
        }

    }


Player 類別  :
    class Player : Creature
    {
        public Player(string name)
        {
            this.name = name;
        }

    }


Monster 類別  :
    class Monster : Creature
    {
        public Monster(string name)
        {
            this.name = name;
        }

        public override string move()
        {
            return name + "橫著走";
        }

    }

Villager 類別  :
    class Villager : Creature
    {
        public Villager(string name)
        {
            this.name = name;
        }

        public override string attack(Creature target) // 覆寫基底類別的此方法
        {
            return name + "不能攻擊其他人";
        }

    }


執行結果:













沒有留言:

張貼留言