C# 小结

1、重载(overload): 在同一个作用域(一般指一个类)的两个或多个方法函数名相同,参数列表不同的方法叫做重载,它们有三个特点(俗称两必须一可以):

  • 方法名必须相同
  • 参数列表必须不相同
  • 返回值类型可以不相同
public void Sleep()
{
    
    
    Console.WriteLine("Animal睡觉");
}
public int Sleep(int time)
{
    
    
    Console.WriteLine("Animal{0}点睡觉", time);
    return time;
}

2、重写(override):子类中为满足自己的需要来重复定义某个方法的不同实现,需要用 override 关键字,被重写的方法必须是虚方法,用的是 virtual 关键字。它的特点是(三个相同):

  • 相同的方法名
  • 相同的参数列表
  • 相同的返回值
public virtual void EatFood()
{
    
    
    Console.WriteLine("Animal吃东西");
}

public override void EatFood()
{
    
    
    Console.WriteLine("Cat吃东西");
    //base.EatFood();
}
实际上这两个概念完全没有关系,仅仅都带有一个“重”字。他们没有在一起比较的意义,仅仅分辨它们不同的定义就好了

多态

using System;

class Animal
{
    
     
    public virtual void Eat()
    {
    
    
        Console.WriteLine("这是animal的eat方法");
    }
}

class Dog:Animal
{
    
    
    public override void Eat()
    {
    
    
        Console.WriteLine("这是dog的eat");
    }
}

class Cat : Animal
{
    
    
    public override void Eat()
    {
    
    
        Console.WriteLine("这是cat的eat");
    }

}
class Program
{
    
    

    static void Main(string[] args) 
    {
    
    
        // 多态的实现前提是继承和方法重写,基类可以new所有的派生类 new哪个类,他就执行那个类的方法
        Animal animal1 = new Animal(); // 实例Animal类
        Animal animal2 = new Dog(); // 实例Dog类
        Animal animal3 = new Cat(); // 实例Cat类

        animal1.Eat(); // 调用Animal类的eat方法
        animal2.Eat(); // 实例Dog类
        animal3.Eat(); // 实例Cat类
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_44659309/article/details/131189824