Question: What is polymorphism in c#?
Answer: Polymorphism means one object behaving as multiple forms. One object or function shows different behavior in the different scenario is called polymorphism. For example, Dilip is a human object or function in which talking behavior will change according to 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 has more than one method with the same, but a 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 the above example, Add is the same-named function, but the parameter is different, so when we call the Add method passing parameter as a string, then the Add method with string parameter will access the same as Add method with int parameter.
Question: What is method overriding?
Answer: To extend or modify the abstract or virtual implementation of the 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 use method overloading?
Answer: When more than one method does the same thing, but takes a different parameter. e.g., Method Area(circle c). Area(Rectangle r).. the basic function is calculating area but with different structures.
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 the 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 the 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");
}
}
The above code will not compile because the base class method should be marked with a 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 a 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 a 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 implementation.