Polymorphism in C# Explained
Polymorphism means an ability to take more than one
form and it’s one of the main pillar of object-oriented programming concepts,
after encapsulation and inheritance.
Polymorphism
is a OOPs concept where one name can have many forms.
For
example, you have a smartphone for communication. The communication mode you
choose could be anything. It can be a call, a text message, a picture message,
mail, etc. So, the goal is common that is communication, but their approach is
different. This is called Polymorphism.
Generally, the
polymorphism is a combination of two words, one is poly and
another one is morphs. Here poly means “multiple”
and morphs means “forms” so polymorphism means many
forms.
Polymorphism in C# provides an ability for the classes to implement different methods that are called through the same name and it also provides an ability to invoke the methods of a derived class through base class reference during runtime based on our requirements.
We have two different kinds of polymorphisms available in C#, these are
1. Compile Time Polymorphism
2. Run Time Polymorphism
Compile Time Polymorphism
Compile Time
Polymorphism means defining
multiple methods with the same name but with different
parameters. By using compile-time polymorphism, we can perform different tasks
with the same method name by passing different parameters.
The compile-time polymorphism can be achieved by using method overloading and it is also called early binding or static binding.
The following is the code snippet for implementing a method overloading to achieve compile-time polymorphism in c#.
{
public void
AddNumbers(int a, int b)
{
Console.WriteLine($"{a} + {b} = {a + b}");
}
public void
AddNumbers(int a, int b, int c)
{
Console.WriteLine($"{a} + {b} + {c} = {a + b + c}");
}
}
If we observe above “Calculate” class closely, we will find
out we defined two methods with same name (AddNumbers)
but with different input parameters to achieve method
overloading, this is called a compile
time polymorphism in C#
Compile Time Polymorphism Example
Below is the example of implementing a compile-time polymorphism in C#.
namespace CsharpnaijaTutorial
{
public class Calculate
{
public void
AddNumbers(int a, int b)
{
Console.WriteLine($"{a} + {b} = {a + b}");
}
public void
AddNumbers(int a, int b, int c)
{
Console.WriteLine($"{a} + {b} + {c} = {a + b + c}");
}
}
class Program
{
static void Main(string[] args)
{
Calculate calculate = new Calculate();
calculate.AddNumbers(1, 2);
calculate.AddNumbers(1, 2, 3);
Console.WriteLine("\nPress Enter Key to Exit..");
Console.ReadLine();
}
}
}
Run Time Polymorphism
Run
Time Polymorphism means overriding a base class method in
the derived class by creating a similar function and this can be
achieved by using override & virtual keywords
along with inheritance principle.
By using run-time
polymorphism, we can override a base class method in the derived
class by creating a method with the same name and parameters to
perform a different task.
The run time polymorphism can
be achieved by using method overriding and
it is also called late binding or dynamic
binding.
Below is the code snippet for
implementing a method overriding to
achieve run time polymorphism.
// Base Class
public class Users
{
public virtual void GetInfo()
{
Console.WriteLine("Base Class");
}
}
// Derived
Class
public class Details : Users
{
public override void
GetInfo()
{
Console.WriteLine("Derived Class");
}
}
If we observe above code snippet, we will
find out that we created two classes Users and Details.
The derived class (Details) is inheriting the properties from
base class (Users) and we are
overriding the base class method GetInfo in
derived class by creating the same function to achieve method overriding, this is called a run time polymorphism.
We defined a GetInfo method
with a virtual keyword
in the base class to allow derived class to override that method using
the override keyword.
Generally, only the methods with a virtual keyword in the base class
are allowed to override in derived class using override keyword.
Run Time Example of Polymorphism
The code below shows the example of
implementing a run time polymorphism in C#.
//using
System;
namespace CSharpnaijaTutorial
{
// Base Class
public class BaseClass
{
public virtual void GetInfo()
{
Console.WriteLine("Learn C# Tutorial");
}
}
// Derived
Class
public class DerivedClass : BaseClass
{
public override void
GetInfo()
{
Console.WriteLine("Welcome to Csharpnaija Blog");
}
}
class Program
{
static void Main(string[] args)
{
DerivedClass derived = new DerivedClass();
derived.GetInfo();
BaseClass baseClass = new BaseClass();
baseClass.GetInfo();
Console.WriteLine("\nPress Enter Key to Exit..");
Console.ReadLine();
}
}
}
Thank you
References
1.
Tutlane
2.
Guru99
This is very good and very interesting please keep up the good work 💯
ReplyDeleteThank you Sir
DeleteThanks dear
ReplyDeleteYou are welcome
Delete