C#多态性

术语“多态”是“ poly” +“ morphs”的组合,表示多种形式。这是一个希腊词。在面向对象的编程中,我们使用3个主要概念:继承,封装和多态性。
【C#多态性】C#中的多态有两种类型:编译时多态和运行时多态。通过C#中的方法重载和运算符重载来实现编译时多态。也称为静态绑定或早期绑定。通过方法重载实现的运行时多态也称为动态绑定或后期绑定。
C#运行时多态示例
让我们看一下C#中运行时多态的简单示例。

using System; public class Animal{ public virtual void eat(){ Console.WriteLine("eating..."); } } public class Dog: Animal { public override void eat() { Console.WriteLine("eating bread..."); }} public class TestPolymorphism { public static void Main() { Animal a= new Dog(); a.eat(); } }

输出:
eating bread...

C#运行时多态示例2
让我们看看C#中运行时多态的另一个示例,其中有两个派生类。
using System; public class Shape{ public virtual void draw(){ Console.WriteLine("drawing..."); } } public class Rectangle: Shape { public override void draw() { Console.WriteLine("drawing rectangle..."); }} public class Circle : Shape { public override void draw() { Console.WriteLine("drawing circle..."); }} public class TestPolymorphism { public static void Main() { Shape s; s = new Shape(); s.draw(); s = new Rectangle(); s.draw(); s = new Circle(); s.draw(); } }

输出:
drawing... drawing rectangle... drawing circle...

数据成员的运行时多态C#中的数据成员无法实现运行时多态。让我们看一个示例,其中我们通过引用变量访问字段,该引用变量引用派生类的实例。
using System; public class Animal{ public string color = "white"; } public class Dog: Animal { public string color = "black"; } public class TestSealed { public static void Main() { Animal d = new Dog(); Console.WriteLine(d.color); } }

输出:
white

    推荐阅读