C# POLYMORPHISM (METHOD OVERRIDING / OVERLOADING )

C# POLYMORPHISM (METHOD OVERRIDING / OVERLOADING )

·

5 min read

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