在C#中,多态性(Polymorphism)是面向对象编程的重要概念之一,它允许以统一的方式处理不同类型的对象。虚方法(Virtual Methods)是实现多态性的机制之一,通过使用虚方法可以在运行时选择正确的方法实现。
// 父类
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的方法
// 父类
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重写的方法
// 抽象类
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(); // 调用子类重写的虚方法
// 接口
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(); // 调用实现接口的方法