C#多态

多态概念

C# 多态是指在程序设计中,同一操作作用于不同的对象,可以有不同的解释和不同的执行结果。

C# 中多态的实现主要通过方法的重写(override)和方法的重载(overload)来实现。

重写(override):重写是在子类中对父类中已有的方法进行重新定义。通过在子类中使用 override 关键字,可以在调用该方法时执行子类中的实现。

重载(overload):重载是在同一个类中定义多个具有相同名称但不同参数列表的方法,这样就可以根据传入的参数类型和个数执行不同的方法。


重写用法

例如,以下代码演示了重写:

public class Shape
{
    public virtual void Draw()//virtual就代表可重写方法
    {
        Console.WriteLine("Drawing a Shape");
    }
}
 public class Circle : Shape
{
    public override void Draw()//通过override重写基类中方法
    {
        Console.WriteLine("Drawing a Circle");
    }
}
public class Square : Shape
{
    public override void Draw() //通过override重写基类中方法
    {
        Console.WriteLine("Drawing a Square");
    }
}
public class Program
{
    static void Main(string[] args)
    {
        Shape shape = new Shape();
        Circle circle = new Circle();
        Square square = new Square();
        DrawShape(shape);
        DrawShape(circle);
        DrawShape(square);
        Console.ReadKey();
    }
    static void DrawShape(Shape shape)
    {
        shape.Draw();
    }
}

输出:

Drawing a Shape
Drawing a Circle
Drawing a Square

在上面的代码中,我们可以看到在调用 DrawShape 方法时,根据不同的对象调用了不同的 Draw 方法 


重载用法

C# 中的方法重载是指在同一个类中,有多个方法具有相同的名称,但是参数的数量、类型或顺序不同。这种技术可以提高代码的可读性和可维护性。

举个例子,下面是一个简单的方法重载的例子:

public class Example
{
    public int Add(int a, int b)
    {
        return a + b;
    }
    public int Add(int a, int b, int c)
    {
        return a + b + c;
    }
}

在上面的代码中,我们有两个名为 Add 的方法,第一个方法接受两个整数参数并返回它们的和,第二个方法接受三个整数参数并返回它们的和。当你调用 Add 方法时,编译器会根据传入的参数的数量和类型选择正确的方法。

注意:重载方法的返回类型不能作为重载的依据。因为在 C# 中方法的返回类型不能重载。


果糖网