以下是一个简单的C#多态性的示例:
using System;
// 基类
public class Shape
{
// 虚方法
public virtual void Draw()
{
Console.WriteLine("Drawing a shape");
}
}
// 派生类1
public class Circle : Shape
{
// 重写基类的方法
public override void Draw()
{
Console.WriteLine("Drawing a circle");
}
}
// 派生类2
public class Square : Shape
{
// 重写基类的方法
public override void Draw()
{
Console.WriteLine("Drawing a square");
}
}
class Program
{
static void Main()
{
// 创建基类对象
Shape shape = new Shape();
// 调用基类的方法
shape.Draw();
// 创建派生类对象1
Circle circle = new Circle();
// 调用派生类的方法,由于重写,会调用派生类的版本
circle.Draw();
// 创建派生类对象2
Square square = new Square();
// 调用派生类的方法,同样会调用派生类的版本
square.Draw();
// 使用多态性,通过基类引用调用派生类的方法
Shape shape1 = new Circle();
shape1.Draw(); // 调用的是 Circle 类的 Draw 方法
Shape shape2 = new Square();
shape2.Draw(); // 调用的是 Square 类的 Draw 方法
}
}
在上述示例中,Shape 是基类,Circle 和 Square 是派生类。这三个类都有一个名为 Draw 的方法。通过重写基类中的虚方法,派生类可以提供自己的实现。
在 Main 方法中,我们创建了基类对象和派生类对象,并演示了多态性的应用。注意到,通过基类引用调用派生类对象的方法时,实际上调用的是派生类中重写的方法。这就是运行时多态性的体现。
多态性提高了代码的灵活性,允许我们编写更通用的代码,以处理多个相关类的对象。
转载请注明出处:http://www.pingtaimeng.com/article/detail/14760/C#