溫馨提示×

class c#如何實(shí)現(xiàn)多態(tài)

c#
小樊
81
2024-10-19 10:57:00
欄目: 編程語言

在C#中,實(shí)現(xiàn)多態(tài)的方法主要有以下兩種:

  1. 接口(Interfaces):接口允許你定義一個(gè)行為契約,然后讓類實(shí)現(xiàn)這個(gè)契約。實(shí)現(xiàn)接口的類必須提供接口中所有方法的實(shí)現(xiàn)。這樣,你就可以通過接口類型的引用來調(diào)用不同類中的方法,從而實(shí)現(xiàn)多態(tài)。
// 定義一個(gè)接口
public interface IShape
{
    double Area();
}

// 實(shí)現(xiàn)接口的類
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;
    }
}

// 使用接口類型的引用來調(diào)用不同類中的方法
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):繼承允許你創(chuàng)建一個(gè)新類,從已有的類繼承屬性和方法。新類可以重寫或擴(kuò)展基類的方法,從而實(shí)現(xiàn)多態(tài)。
// 基類
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");
    }
}

// 使用基類類型的引用來調(diào)用派生類中的方法
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"
    }
}

這兩種方法都可以實(shí)現(xiàn)多態(tài),但接口更適合用于定義行為契約,而繼承更適合用于表示類之間的關(guān)系。在實(shí)際開發(fā)中,你可以根據(jù)需要選擇合適的方法來實(shí)現(xiàn)多態(tài)。

0