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# 中方法的返回类型不能重载。
2016 © donet5.comApache Licence 2.0