在C#中,多态性是面向对象编程的一个重要概念,它允许不同类的对象对相同的消息(方法调用)作出不同的响应。多态性有两种形式:编译时多态性(静态多态性,也称为早期绑定)和运行时多态性(动态多态性,也称为晚期绑定)。

以下是一个简单的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.zyzy.cn/article/detail/14760/C#