Thursday, November 10, 2011

C#: Polymorphism new vs override

new keyword is used to hide an inherited member from a base class
override keyword is used to provide a new implementation of a member inherited from a base method.

class Demo
{
static void Main(string[] args)
{
Animal a = new Cat();
Animal b = new Dog();
Animal c = new Animal();

a.sayHi();
b.sayHi();
c.sayHi();
Console.ReadLine();
}
}

class Animal
{
public Animal()
{
Console.WriteLine("Animal");
}
public virtual void sayHi()
{
Console.WriteLine("Animal sayHi");
}
}

class Cat : Animal
{
public Cat()
{
Console.WriteLine("Cat");
}

public new void sayHi()
{
Console.WriteLine("Cat sayHi");
}
}

class Dog : Animal
{
public Dog()
{
Console.WriteLine("Dog");
}

public override void sayHi()
{
Console.WriteLine("Dog sayHi");
}
}

The result is shown below:

No comments:

Post a Comment