c#

class c#如何实现多态

小樊
82
2024-10-19 10:57:00
栏目: 编程语言

在C#中,实现多态的方法主要有以下两种:

  1. 接口(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());
    }
}
  1. 继承(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"
    }
}

这两种方法都可以实现多态,但接口更适合用于定义行为契约,而继承更适合用于表示类之间的关系。在实际开发中,你可以根据需要选择合适的方法来实现多态。

0
看了该问题的人还看了