Search code examples
c#polymorphism

C# Polymorphism



What's the difference between run-time polymorphism and compile-time polymorphism? Also, what's the difference between early binding and late binding? Examples would be highly appreciated.


Solution

  • Compile Time Polymorphism

    Method overloading is a great example. You can have two methods with the same name but with different signatures. The compiler will choose the correct version to use at compile time.

    Run-Time Polymorphism

    Overriding a virtual method from a parent class in a child class is a good example. Another is a class implementing methods from an Interface. This allows you to use the more generic type in code while using the implementation specified by the child. Given the following class definitions:

    public class Parent
    {
        public virtual void SayHello() { Console.WriteLine("Hello World!"); }
    }
    
    public class Child : Parent
    {
        public override void SayHello() { Console.WriteLine("Goodbye World!"); }
    }
    

    The following code will output "Goodbye World!":

    Parent instance = new Child();
    instance.SayHello();
    

    Early Binding

    Specifying the type at compile time:

    SqlConnection conn = new SqlConnection();
    

    Late Binding

    The type is determined at runtime:

    object conn = Activator.CreateInstance("System.Data.SqlClient.SqlConnection");