Sunday, 12 February 2012

C# Inheritance with example

   public class BaseClass
   {
       public void Method1()
       {
           Console.WriteLine("In BaseClass Method1");
       }
       public virtual void Method2()
       {
           Console.WriteLine("In BaseClass Method2");
       }
   }
   public class DerivedClass : BaseClass
   {
       public new void Method1()
       {
           Console.WriteLine("In DerivedClass Method1");
       }
       public override void Method2()
       {
           Console.WriteLine("In DerivedClass Method2");
       }
   }
   public class sample
   {
       static void Main(string[] args)
       {
           BaseClass b1 = new BaseClass();
           b1.Method1();
           b1.Method2();

           DerivedClass d1 = new DerivedClass();
           d1.Method1();
           d1.Method2();

           BaseClass b2 = new DerivedClass();
           b2.Method1();
           b2.Method2();

           DerivedClass d2 = new BaseClass();
           d2.Method1();
           d2.Method2();

           Console.ReadLine();  
       }
   }

Output for the above is:
In BaseClass Method1
In BaseClass Method2
In DerivedClass Method1
In DerivedClass Method2
In BaseClass Method1
In DerivedClass Method2

DerivedClass d2 = new BaseClass();
d2.Method1();
d2.Method2();
Above statement won’t get compiled, it will give compiler Error “Cannot implicitly convert type 'BaseClass' to 'DerivedClass'. An explicit conversion exists (are you missing a cast?)”

Explanation
In BaseClass Method1
In BaseClass Method2
We invoked methods of BaseClass

In DerivedClass Method1
In DerivedClass Method2
We invoked methods of DerivedClass

In BaseClass Method1
In DerivedClass Method2
We invoked Method1 of derived class using base class reference, so the base class method1 is invoked.
We invoked Method2 of derived class using base class reference, as the base class method2 is overridden in derived class derived class Method2 is invoked.

In this example we used the following OOPS concepts
  1. Shadowing or Method Hiding, new keyword in signature of Method1 in Derived Class.
  2. Overriding, override keyword in signature of Method2 in Derived Class.

No comments:

Post a Comment