Polymorphism : Polymorphism" is the combination of "poly" + "morphs" which means many forms.
Types of polymorphism : 1.compile time polymorphism , 2.runtime polymorphism
1.Compile time polymorphism :
- Defining multiple methods with the same name with different parameters.
using System;
public class SampleClass {
public void ADD(int x, int y) {
Console.WriteLine("x + y = {0}", x + y);
}
public void ADD(int x, double y) {
Console.WriteLine("x + y = {0}", x + y);
}
public void ADD(int x, int y, int z) {
Console.WriteLine("x + y + z = {0}", x + y + z);
}
}
public class Program {
public static void Main(string[] args) {
SampleClass myobj = new SampleClass();
myobj.ADD(1, 2);
myobj.ADD(1, 0.3);
myobj.ADD(1, 2, 3);
}
}
o/p:
==========
x + y = 3
x + y = 1.3
x + y + z = 6
2.Runtime polymorphism :
- overriding a base class method in the derived class.
using System;
public class BaseClass {
public virtual void Method() {
Console.WriteLine("Base Class");
}
}
public class DerivedClass : BaseClass {
public override void Method() {
Console.WriteLine("Derived Class");
}
}
public class DerivedClasstwo : BaseClass {
public override void Method() {
Console.WriteLine("Derived Class Two");
}
}
public class Program {
public static void Main(string[] args) {
DerivedClasstwo myobj = new DerivedClasstwo();
myobj.Method();
DerivedClass myobj1 = new DerivedClass();
myobj1.Method();
BaseClass myobj2 = new BaseClass();
myobj2.Method();
}
}
o/p:
==========
Derived Class Two
Derived Class
Base Class
Method Overloading :
- we can create two or more Methods having same name but different types or diff no of parameter.
using System;
public class SampleClass {
public void ADD(int x, int y) {
Console.WriteLine("x + y = {0}", x + y);
}
public void ADD(int x, double y) {
Console.WriteLine("x + y = {0}", x + y);
}
public void ADD(int x, int y, int z) {
Console.WriteLine("x + y + z = {0}", x + y + z);
}
}
public class Program {
public static void Main(string[] args) {
SampleClass myobj = new SampleClass();
myobj.ADD(1, 2);
myobj.ADD(1, 0.3);
myobj.ADD(1, 2, 3);
}
}
o/p:
==========
x + y = 3
x + y = 1.3
x + y + z = 6
Method Overriding :
If base class, derived class has same method and perform a different task.
we need to use override keyword in derived class & virtual keyword in base class.
using System;
public class BaseClass {
public virtual void Method() {
Console.WriteLine("Base Class");
}
}
public class DerivedClass : BaseClass {
public override void Method() {
Console.WriteLine("Derived Class");
}
}
public class DerivedClasstwo : BaseClass {
public override void Method() {
Console.WriteLine("Derived Class Two");
}
}
public class Program {
public static void Main(string[] args) {
DerivedClasstwo myobj = new DerivedClasstwo();
myobj.Method();
DerivedClass myobj1 = new DerivedClass();
myobj1.Method();
BaseClass myobj2 = new BaseClass();
myobj2.Method();
}
}
o/p:
==========
Derived Class Two
Derived Class
Base Class