public abstract void Display();
public static void Print()
Console.WriteLine("This is interface static method");
public virtual void Show()
Console.WriteLine("This is interface virtual method");
interface IDerivedInterface : IBaseInterface
abstract void IBaseInterface.Show();
abstract class AbstractClass
public int globalVariable = 0;
public abstract void Display();
public static void Print()
Console.WriteLine("This is abstract class static method");
public virtual void Show()
Console.WriteLine("This is abstract class virtual method");
this.globalVariable = 100;
Console.WriteLine("Abstract class destructor is called");
struct MyStructor : IBaseInterface
Console.WriteLine("This is implemented method of interface in MyStructor");
void IBaseInterface.Show()
Console.WriteLine("This is overriden interface virtual method in MyStructor");
class DerivedClass : IBaseInterface
Console.WriteLine("This is implemented method in DerivedClass");
void IBaseInterface.Show()
Console.WriteLine("This is overriden interface virtual method in DerivedClass");
class ChildClass : AbstractClass
public sealed override void Display()
Console.WriteLine("This is overridden abstract method in ChildClass");
Console.WriteLine("This is hidden abstract class virtual method in ChildClass");
abstract class SubClass : AbstractClass
public override abstract void Display();
abstract class MyClass : IBaseInterface
public abstract void Display();
public abstract void Show();
public static void Main()
Console.WriteLine("------------- Struct Inheriting Interface-----------------\n");
MyStructor _myStruct = new MyStructor();
((IBaseInterface)_myStruct).Show();
Console.WriteLine("\n------------- Class Inheriting Interface-----------------\n");
DerivedClass _derivedClass = new DerivedClass();
((IBaseInterface)_derivedClass).Show();
Console.WriteLine("\n------------- Class Inheriting Abstract Class-----------------\n");
ChildClass _childClass = new ChildClass();
((AbstractClass)_childClass).Show();