C# Polymorphism

The term "Polymorphism" is the combination of "poly" + "morphs" which means many forms. It is a greek word. In object-oriented programming, we use 3 main concepts: inheritance, encapsulation and polymorphism.

There are two types of polymorphism in C#: compile time polymorphism and runtime polymorphism. Compile time polymorphism is achieved by method overloading and operator overloading in C#. It is also known as static binding or early binding. Runtime polymorphism in achieved by method overriding which is also known as dynamic binding or late binding.

Example #1

Let's see a simple example of runtime polymorphism in C#.

snippet
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();
    }
}
Output
eating bread...
Example #2

Let's see a another example of runtime polymorphism in C# where we are having two derived classes.

snippet
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();

    }
}
Output
drawing... drawing rectangle... drawing circle...

Runtime Polymorphism with Data Members

Runtime Polymorphism can't be achieved by data members in C#. Let's see an example where we are accessing the field by reference variable which refers to the instance of derived class.

Example
snippet
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);
  
    }
}
Output
white
Related Tutorial
Follow Us
https://www.facebook.com/Rookie-Nerd-638990322793530 https://twitter.com/RookieNerdTutor https://plus.google.com/b/117136517396468545840 #
Contents +