Look at given below steps:

  • If method in the base and derived class are same and not made virtual in the base class and not being override in the derived then following case will occur :
    1. using System;
    2. public class Program
    3. {
    4. public static void Main()
    5. {
    6. Base objBase = new Base();
    7. objBase.Message(); // I amd Base
    8. Derived objDerived = new Derived();
    9. objDerived.Message(); // I am Derived
    10. // Now, set the reference of derived class to base class.
    11. objBase = new Derived();
    12. objBase.Message(); // I am Base
    13. }
    14. }
    15. public class Base
    16. {
    17. public void Message()
    18. {
    19. Console.WriteLine("I am Base");
    20. }
    21. }
    22. public class Derived : Base
    23. {
    24. public void Message()
    25. {
    26. Console.WriteLine("I am Derived");
    27. }
    28. }
  • Output:

    I am Base
    I am Derived
    I am Base

    Executing Code URL: .NET Fiddle.

  • If method in the base and derived class are same and made virtual in the base class and being override in the derived then following case will occur:
    1. using System;
    2. public class Program
    3. {
    4. public static void Main()
    5. {
    6. Base objBase = new Base();
    7. objBase.Message(); // I amd Base
    8. Derived objDerived = new Derived();
    9. objDerived.Message(); // I am Derived
    10. // Now, set the reference of derived class to base class.
    11. objBase = new Derived();
    12. objBase.Message(); // I am Derived
    13. }
    14. }
    15. public class Base
    16. {
    17. public virtual void Message()
    18. {
    19. Console.WriteLine("I am Base");
    20. }
    21. }
    22. public class Derived : Base
    23. {
    24. public override void Message()
    25. {
    26. Console.WriteLine("I am Derived");
    27. }
    28. }
    Executing Code URL: DotNetFiddle.

  • If method in the base and derived class are same and not made virtual in the base class and not being override in the derived. Also, new keyword is being applied with the derived class method then following case happens:
    1. using System;
    2. public class Program
    3. {
    4. public static void Main()
    5. {
    6. Base objBase = new Base();
    7. objBase.Message(); // I amd Base
    8. Derived objDerived = new Derived();
    9. objDerived.Message(); // I am Derived
    10. // Now, set the reference of derived class to base class.
    11. objBase = new Derived();
    12. objBase.Message(); // I am Base
    13. }
    14. }
    15. public class Base
    16. {
    17. public void Message()
    18. {
    19. Console.WriteLine("I am Base");
    20. }
    21. }
    22. public class Derived : Base
    23. {
    24. public new void Message()
    25. {
    26. Console.WriteLine("I am Derived");
    27. }
    28. }
    Output:

    I am Base
    I am Derived
    I am Base

    Executing Code URL: DotNetFiddle.