虚方法

来源:互联网 发布:数控车内锥编程实例 编辑:程序博客网 时间:2024/04/25 11:54

using System;
namespace VirtualMethod
{
    public class Animal
    {
        public Animal() { }
        public void Sleep() { }
        public bool IsHungry = true;
        public virtual void Eat()
        {
            Console.WriteLine("Eat something");
        }
    }

    public class Elephant : Animal
    {
        public int CarryCappacity;
        public override void Eat()
        {
            Console.WriteLine("Eat grass");
        }
    }

    public class Mouse : Animal
    {
        public override void Eat()
        {
            Console.WriteLine("Eat cheese");
        }
    }

    public class Cat : Animal
    {
        public void StalkPrey() { }
        public override void Eat()
        {
            Console.WriteLine("Eat mouse");
        }
    }

    public class WildLife
    {
        public WildLife()
        {
            Elephant myElephant = new Elephant();
            Mouse myMouse = new Mouse();
            FeedingTime(myElephant);
            FeedingTime(myMouse);
        }
        public void FeedingTime(Animal someCreature)
        {
            if (someCreature.IsHungry) //这里使用了多态性
            {
                someCreature.Eat();
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            WildLife w = new WildLife();
            Cat mycat = new Cat();
            w.FeedingTime(mycat);
           
        }
    }
}