在C#中,实现多态的方法主要有以下两种:
// 定义一个接口
public interface IShape
{
double Area();
}
// 实现接口的类
public class Circle : IShape
{
private double radius;
public Circle(double radius)
{
this.radius = radius;
}
public double Area()
{
return Math.PI * radius * radius;
}
}
public class Rectangle : IShape
{
private double width;
private double height;
public Rectangle(double width, double height)
{
this.width = width;
this.height = height;
}
public double Area()
{
return width * height;
}
}
// 使用接口类型的引用来调用不同类中的方法
public class Program
{
public static void Main()
{
IShape circle = new Circle(5);
IShape rectangle = new Rectangle(4, 6);
Console.WriteLine("Circle area: " + circle.Area());
Console.WriteLine("Rectangle area: " + rectangle.Area());
}
}
// 基类
public class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("The animal makes a sound");
}
}
// 派生类
public class Dog : Animal
{
// 重写基类的方法
public override void MakeSound()
{
Console.WriteLine("The dog barks");
}
}
public class Cat : Animal
{
// 重写基类的方法
public override void MakeSound()
{
Console.WriteLine("The cat meows");
}
}
// 使用基类类型的引用来调用派生类中的方法
public class Program
{
public static void Main()
{
Animal dog = new Dog();
Animal cat = new Cat();
dog.MakeSound(); // 输出 "The dog barks"
cat.MakeSound(); // 输出 "The cat meows"
}
}
这两种方法都可以实现多态,但接口更适合用于定义行为契约,而继承更适合用于表示类之间的关系。在实际开发中,你可以根据需要选择合适的方法来实现多态。