//The virtual keyword is used to modify a method, property, indexer or event declaration,
//and allow it to be overridden in a derived class
class Class1
{
static void Main(string[] args)
{
Foo b1 = new Bar();
b1.Response();
Console.ReadLine();
}
}
abstract class Foo
{
public virtual void Response()
{
Console.WriteLine("In Foo");
}
}
class Bar : Foo
{
public new void Response()
{
Console.WriteLine("In Bar");
}
}
//Output
//In Foo