在 C# 中,多态性(polymorphism)是指不同的类可以有相同名称但不同实现的方法。通过多态性,你可以在运行时根据对象的实际类型来调用相应的方法,从而实现更加灵活和可扩展的代码。比较类似子类方法重写,如python的子类讲父类的方法重写。
using System;class Program
{static void Main(){// 创建父类对象Animal animal = new Dog();// 调用父类的方法animalEat(animal);}static void animalEat(Animal animal){// 无论实际对象是什么类型,都可以通过 animal 变量调用Eat 方法animal.Eat(); }
}class Animal
{public virtual void Eat(){Console.WriteLine("动物会进食。");}
}class Dog : Animal
{public override void Eat(){Console.WriteLine("狗吃狗粮。");}
}
在上面的示例中,定义了一个父类Animal
和一个子类Dog
,它们都具有一个名为Eat
的方法。Eat
方法在父类中被声明为虚方法(使用virtual
关键字),在子类中被重写(使用override
关键字)。
在Main
方法中,创建了一个Animal
类型的变量animal
,并将一个Dog
对象赋值给它。然后,调用了animalEat
方法,并将animal
作为参数传递给它。
在animalEat
方法中,通过animal
变量调用了Eat
方法。由于Eat
方法是虚方法,在运行时会根据实际对象的类型来动态地调用相应的方法。因此,当animal
实际指向一个Dog
对象时,会调用Dog
类中的Eat
方法,输出"狗吃狗粮"。
通过使用多态性,可以在父类和子类之间实现方法的动态调用,使代码更加灵活和可扩展。