using System;
public class Program
{
public static void Main()
Console.WriteLine("Hello World");
c C = new c();
abstractb B = new d();
interfacea A = new c();
B.test2();
A.test1();
B.test3();
}
class d : abstractb
public override void test2()
Console.WriteLine("D-Ab-B");
//This will be printed if the object is of Type d
//But if we are storing the obj in abstractb then this menthod even if shadowing will not work
public new void test3()
Console.WriteLine("D is hinding test3()");
class c : interfacea
public void test1()
Console.WriteLine("C-In-A");
interface interfacea
void test1();
abstract class abstractb
public abstract void test2();
public void test3()
Console.WriteLine("ABC");