zoukankan      html  css  js  c++  java
  • C#中多态

    我的理解是:通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态.
    1: OverRide 实现多态

     1 public class Animal
     2     {
     3         public virtual void Eat()
     4         {
     5             Console.WriteLine("Animal eat");
     6         }
     7     }
     8     public class Dog : Animal
     9     {
    10         public override void Eat()
    11         {
    12             Console.WriteLine("Dog eat");
    13         }
    14     }
    15     public class WolfDog : Dog
    16     {
    17         public override void Eat()
    18         {
    19             Console.WriteLine("WolfDog eat");
    20         }
    21     }
    22     class Tester
    23     {
    24         static void Main(string[] args)
    25         {
    26             Animal[] animals = new Animal[3];
    27             animals[0] = new Animal();
    28             animals[1] = new Dog();
    29             animals[2] = new WolfDog();
    30             for (int i = 0; i < 3; i++)
    31             {
    32                 animals[i].Eat();
    33             }
    34         }
    35 }

    运行结果为:
    Animal eat...
    Dog eat...
    WolfDog eat...
    2:New虚方法实现多态

     1 public class Animal
     2     {
     3         public virtual void Eat()
     4         {
     5             Console.WriteLine("Animal eat");
     6         }
     7     }
     8     public class Cat : Animal
     9     {
    10         public new void Eat()
    11         {
    12             Console.WriteLine("Cat eat");
    13         }
    14     }
    15     class Tester
    16     {
    17         static void Main(string[] args)
    18 
    19         {
    20             Animal a = new Animal();
    21             a.Eat();
    22             Animal ac = new Cat();
    23             ac.Eat();
    24             Cat c = new Cat();
    25             c.Eat();
    26         }
    27     }

    输出结果如下
    Animal eat...
    Animal eat...
    Cat eat...

  • 相关阅读:
    iOS
    UI基本视图控制
    堆和栈的区别 ?
    单例模式
    Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么?
    id
    协议
    分类(类别)
    #import和#include以及@class三者的区别?
    内存管理
  • 原文地址:https://www.cnblogs.com/liubeimeng/p/3822308.html
Copyright © 2011-2022 走看看