C#中的多态性

  1、重载(overload)

 public void Sleep()
        {
            Console.WriteLine("Animal睡觉");
        }
        public int Sleep(int time)
        {
            Console.WriteLine("Animal{0}点睡觉", time);
            return time;
        }

  2、重写(override)

  public virtual void EatFood()
        {
            Console.WriteLine("Animal吃东西");
        } 

public override void EatFood()
        {
            Console.WriteLine("Cat吃东西");
            //base.EatFood();
        }
View Code

3、虚方法:即为基类中定义的允许在派生类中重写的方法,使用virtual关键字定义

在派生类中通过override重载该方法,通过基类变量引用派生类对象,来访问派生类中重载的这个同名方法

class  Shape
{
   private int x;
   private int y;
   public Shape(int sx,int sy)
  {
   x=sx;
   y=xy;
  }
   public virtual float Area()
  {
    return 0.0f
  }
}
class Rectangle:Shape
{ 
    private int w;
    private int h;
    public  Rectangle(int rx,int ry ,int rw,int rh):base(rx,ry)--调用父类的方法 --this 则是调用自己的方法
  {
    w=rw;
    h=rh;
  } 
   pulic override float Area()
  {
   return w*h;
   }
}

class Program
{
   static void Main(string[] args)
  {
      Shape myshape;
      Rectangle r = new  Rectangle (2,2,10,26);
      myshape=r;
console.writeline(myshape.Area());//父类变量引用子类的对象,调用子类中的同名方法
  

  }
}
View Code
111111
原文地址:https://www.cnblogs.com/whl4835349/p/6031299.html