阅读量:0
在C#中,实现多态的方法主要有以下两种:
- 接口(Interfaces):接口允许你定义一个行为契约,然后让类实现这个契约。实现接口的类必须提供接口中所有方法的实现。这样,你就可以通过接口类型的引用来调用不同类中的方法,从而实现多态。
// 定义一个接口 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()); } }
- 继承(Inheritance):继承允许你创建一个新类,从已有的类继承属性和方法。新类可以重写或扩展基类的方法,从而实现多态。
// 基类 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" } }
这两种方法都可以实现多态,但接口更适合用于定义行为契约,而继承更适合用于表示类之间的关系。在实际开发中,你可以根据需要选择合适的方法来实现多态。