Explain polymorphism in C# with a simple
example?
Polymorphism allows you to invoke derived
class methods through a base class reference during run-time. An example is
shown below.
using System;
public class DrawingObject
{
public virtual void Draw()
{
Console.WriteLine("I am a drawing
object.");
}
}
public class Triangle : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I am a
Triangle.");
}
}
public class Circle : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I am a
Circle.");
}
}
public class Rectangle : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I am a
Rectangle.");
}
}
public class DrawDemo
{
public static void Main()
{
DrawingObject[] DrawObj = new
DrawingObject[4];
DrawObj[0] = new Triangle();
DrawObj[1] = new Circle();
DrawObj[2] = new Rectangle();
DrawObj[3] = new DrawingObject();
foreach (DrawingObject drawObj in DrawObj)
{
drawObj.Draw();
}
}
}
When can a derived class override a base class
member?
A derived class can override a base class
member only if the base class member is declared as virtual or abstract.
What is the difference between a virtual
method and an abstract method?
A virtual method must have a body where as
an abstract method should not have a body.
Can fields inside a class be virtual?
No, Fields inside a class cannot be virtua.
Only methods, properties, events and indexers can be virtual.
Give an example to show for hiding base
class methods?
Use the new keyword to hide a base class
method in the derived class as shown in the example below.
using System;
public class BaseClass
{
public virtual void Method()
{
Console.WriteLine("I am a base class
method.");
}
}
public class DerivedClass : BaseClass
{
public new void Method()
{
Console.WriteLine("I am a child class
method.");
}
public static void Main()
{
DerivedClass DC = new DerivedClass();
DC.Method();
}
}
Can you access a hidden base class method
in the derived class?
Yes, Hidden base class methods can be accessed
from the derived class by casting the instance of the derived class to an
instance of the base class as shown in the example below.
using System;
public class BaseClass
{
public virtual void Method()
{
Console.WriteLine("I am a base class
method.");
}
}
public class DerivedClass : BaseClass
{
public new void Method()
{
Console.WriteLine("I am a child class
method.");
}
public static void Main()
{
DerivedClass DC = new DerivedClass();
((BaseClass)DC).Method();
}
}
No comments:
Post a Comment