C# 编程指南:多态性(Polymorphism)和虚方法(Virtual Methods)

在C#中,多态性(Polymorphism)是面向对象编程的重要概念之一,它允许以统一的方式处理不同类型的对象。虚方法(Virtual Methods)是实现多态性的机制之一,通过使用虚方法可以在运行时选择正确的方法实现。

部分
1
多态性(Polymorphism)
多态性是指同一操作对于不同类型的对象可以有不同的行为。
多态性允许以统一的方式处理不同类型的对象,提高代码的可扩展性和灵活性。
多态性通过继承、接口和虚方法等机制实现。
// 父类
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.");
    }
}

// 使用多态性处理不同类型的对象
Shape shape1 = new Circle();
Shape shape2 = new Square();

shape1.Draw(); // 调用子类1的方法
shape2.Draw(); // 调用子类2的方法
部分
2
虚方法(Virtual Methods)
虚方法是通过 virtual 关键字定义的,它允许在子类中重写父类的方法。
虚方法提供了一种在运行时选择正确的方法实现的机制,实现了多态性的一种形式。
父类中的虚方法可以在子类中被重写,并根据实际对象类型调用正确的方法。
// 父类
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.");
    }
}

// 使用虚方法实现多态性
Shape shape1 = new Circle();
Shape shape2 = new Square();

shape1.Draw(); // 调用子类1重写的方法
shape2.Draw(); // 调用子类2重写的方法
部分
3
抽象类和虚方法
抽象类可以包含虚方法,并且子类必须实现抽象类中的虚方法。
抽象类提供了一种定义通用行为并要求子类提供具体实现的机制。
// 抽象类
public abstract class Shape
{
    public abstract void Draw(); // 抽象方法

    public virtual void Resize()
    {
        Console.WriteLine("Resizing the shape.");
    }
}

// 子类实现抽象类的虚方法
public class Circle : Shape
{
    public override void Draw()
    {
        Console.WriteLine("Drawing a circle.");
    }

    public override void Resize()
    {
        Console.WriteLine("Resizing the circle.");
    }
}

// 使用抽象类和虚方法
Shape shape = new Circle();
shape.Draw(); // 调用子类实现的抽象方法
shape.Resize(); // 调用子类重写的虚方法
部分
4
接口和多态性
接口也是实现多态性的一种方式,通过实现接口可以在不同类型的对象上调用相同的方法。
类可以实现一个或多个接口,并提供接口中定义的方法的具体实现。
// 接口
public interface IShape
{
    void Draw();
}

// 实现接口的类
public class Circle : IShape
{
    public void Draw()
    {
        Console.WriteLine("Drawing a circle.");
    }
}

public class Square : IShape
{
    publicvoid Draw()
    {
        Console.WriteLine("Drawing a square.");
    }
}

// 使用接口实现多态性
IShape shape1 = new Circle();
IShape shape2 = new Square();

shape1.Draw(); // 调用实现接口的方法
shape2.Draw(); // 调用实现接口的方法
    目录

  • 1.
    多态性(Polymorphism)
  • 2.
    虚方法(Virtual Methods)
  • 3.
    抽象类和虚方法
  • 4.
    接口和多态性