Jan 28, 2015

polymorphism interview questions and answers in c#

Question: What is polymorphism in c#?
Answer: Polymorphism mean one object behaving as multiple forms. One object or function shows different behavior in different scenario is called polymorphism. For example : Dilip is a human object or function which talking behavior will change according his Father, Mother, Son, Boss etc.
In C# there are two types of polymorphism
1.  Static or Compile time
·         Function Overloading
·         operator overloading
2.  Run Time
·         Virtual function

Question: What is method overloading ?
Answer: When a class have more than one method with same but different signature is called method overloading.
For example:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{

    class A
    {
       //1- Passed string parameter
        public void Add(string a, string b)
        {
            a = a + b;
            Console.WriteLine(a);
        }
       //2- Passed int parameter
        public void Add(int a, int b)
        {
            a = a + b;
            Console.WriteLine(a);
        }
        static void Main(string[] args)
        {
            A oA = new A();
            oA.add("Dilip","Singh");
            oA.add(10, 15);
        }
    }
}

Output:
DilipSingh
25

In above example Add is the same named function but parameter is different so when we call Add method passing parameter as string then Add method with string parameter will be access same as Add method with int parameter.

Question: What is method overriding?
Answer: To extend or modify the abstract or virtual implementation of inherited method, property, indexer or event is called overriding.
For example:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{

    class Demo
    {
        static void Main(string[] args)
        {
            A oA;
            oA = new A();
            oA.Display();
            oA = new B();
            oA.Display();
        }
    }
    class A
    {
        public virtual void Display()
        {
            Console.WriteLine("Base class");
        }
    }
    class B : A
    {
        public override void Display()
        {
            Console.WriteLine("Derived class");
        }
    }
}

Question: When should be use method overloading?
 Answer:  When more than one method do same thing but take different parameter. eg Method Area(circle c). Area(Rectangle r).. the basic function is calculating area but with different structure.

Question: Advantage of Polymorphism?
Answer:
·         Invoking child class functions dynamically
·         Maintenance of code becomes easy.

Question: What is the difference between "new" and "override" keyword in inheritance chain ?
Answer:  Override: When a method of a base class is overridden in a derived class, the version in the derived class is used, even if the calling code didn't "know" that the object was an instance of the derived class.

New: If you use the new keyword instead of override, the method in the derived class doesn't override the method in the base class, it merely hides it.

Question: Will following code will compile? Why?
Answer:
A) class A
    {
        public  void Display()
        {
            Console.WriteLine("Base class");
        }
    }
    class B : A
    {
        public override void Display()
        {
            Console.WriteLine("Derived class");
        }
    }

Above code will not compile, because base class method should be mark with virtual class.
B)
class A
    {
        public void Display()
        {
            Console.WriteLine("Base class");
        }
    }
    class B : A
    {
        public new void Display()
        {
            Console.WriteLine("Derived class");
        }
    }
Yes above code will be compile because new keyword defines its own implementation and it's not related to base class method in any way.
C)
class A
    {
        public virtual void Display(ref int a)
        {
            Console.WriteLine("Base class");
        }
    }
    class B : A
    {
        public override void Display(out int a)
        {
            Console.WriteLine("Derived class");
        }
    }
Above code will give compile time error due to signature mismatch.
Question: What is the disadvantage of using virtual keyword?
Answer:
1.       Appropriate function calls are determined only at runtime.

2.       Since virtual keyword is used derived classes may ignore that base class implementations.