zoukankan      html  css  js  c++  java
  • 多态(虚方法)

    使用虚方法实现“多态”

    背景:

        class Animal
        {
            public string name; public int age; public float temperature;
            public  void Eat()
            {
                Console.WriteLine("Animal 吃东西");
            }
        }
        class Wolf : Animal
        {
            public string color;
            public void hunt(){}
            public  void Eat()
            {
                Console.WriteLine("Wolf 吃 羊");
            }
        }
        class Fish:Animal
        {       
            public void Swim() { }
            public void Eat()
            {
                Console.WriteLine("Fish 吃东西 小Fish");
            }
        }   

    在main方法中使用这段代码

                Wolf hui = new Wolf();
                hui.Eat();
               
                Fish jin = new Fish();
                jin.Eat();

    发现,使用的Eat方法都是派生类的。

    但是,如果这样使用

                Animal a;
                a = hui;           
                a.Eat();   

                a = jin;            
                a.Eat();

    使用的Eat方法,却是基类的!!!

    这显然不是我们想要的。

    我们需要,根据对象运行时,所属类的不同,调用相应类的方法。

    这就是多态

    关键词 virtual  override。在基类中的方法,加上修饰符virtual ,在派生类中加上override 。代码如下:

        class Animal
        {
            public string name; public int age; public float temperature;
            public virtual  void Eat()
            {
                Console.WriteLine("Animal 吃东西");
            }
        }
        class Wolf : Animal
        {
            public string color;
            public void hunt(){}
            public override void Eat()
            {
                Console.WriteLine("Wolf 吃 羊");
            }
        }
        class Fish:Animal
        {       
            public void Swim() { }
            public override void Eat()
            {
                Console.WriteLine("Fish 吃东西 小Fish");
            }
        }   

    再看看程序运行的结果

  • 相关阅读:
    Web--js高级--12月19日随笔
    Web--js高级--12月18日随笔
    Web--js高级--12月17日随笔
    Web--js高级--关于所学闭包随笔
    Web--js高级--12月10日随笔
    Web--js高级--12月4日随笔
    Web--js高级--12月3日随笔
    微信小程序预览图片
    开发微信“小程序”必学教程
    navigator 页面链接
  • 原文地址:https://www.cnblogs.com/imxh/p/2442626.html
Copyright © 2011-2022 走看看