Types of Polymorphism C# with Example



Types of Polymorphism C# with Example

Polymorphism means that a operation can also be applied to values of some other types. 
There are multiple types of Polymorphism: 
Ad hoc polymorphism: 
contains function overloading. The target is that a Method can be used with different types without the 
need of being generic. 
Parametric polymorphism: 
is the use of generic types. See Generics 
Subtyping: 
has the target inherit of a class to generalize a similar functionality 
Ad hoc polymorphism 
The target of Ad hoc polymorphism is to create a method, that can be called by different datatypes without a need 
of type-conversion in the function call or generics. The following method(s) sumInt(par1, par2) can be called with 
different datatypes and has for each combination of types a own implementation: 
public static int sumInt( int a, int b) 
{ 
return a + b; 
} 
public static int sumInt( string a, string b) 
{ 
int _a, _b; 
if(!Int32.TryParse(a, out _a)) 
_a = 0; 
if(!Int32.TryParse(b, out _b)) 
_b = 0; 
return _a + _b; 
} 
public static int sumInt(string a, int b) 
{ 
int _a; 
if(!Int32.TryParse(a, out _a)) 
_a = 0; 
return _a + b; 
} 
public static int sumInt(int a, string b) 
{ 
return sumInt(b,a); 
} 
Here's a example call: 
 

public static void Main() 
{ 
Console.WriteLine(sumInt( 1 , 2 )); // 3 
// 7 
Console.WriteLine(sumInt("3","4")); 
Console.WriteLine(sumInt("5", 6 )); // 11 
Console.WriteLine(sumInt( 7 ,"8")); // 15 
} 
Subtyping 
Subtyping is the use of inherit from a base class to generalize a similar behavior: 
public interface Car{ 
void refuel(); 
} 
public class NormalCar : Car 
{ 
public void refuel() 
{ 
Console.WriteLine("Refueling with petrol"); 
} 
} 
public class ElectricCar : Car 
{ 
public void refuel() 
{ 
Console.WriteLine("Charging battery"); 
} 
} 
Both classes NormalCar and ElectricCar now have a method to refuel, but their own implementation. Here's a 
Example: 
public static void Main() 
{ 
List cars = new List(){ 
new NormalCar(), 
new ElectricCar() 
}; 
cars.ForEach(x => x.refuel()); 
} 
The output will be was following: 
Refueling with petrol 
Charging battery 

0 Comment's

Comment Form

Submit Comment