public abstract class ParentClass
public string CommonMethod()
public abstract string Method3();
public virtual string Method1()
return "Default Method 1";
public virtual string Method2()
return "Default Method 2";
public class ClassA : ParentClass
public override string Method1()
return "Class A - Method1";
public override string Method2()
return "Class A - Method2";
public override string Method3()
return "Class A - Method3";
public class ClassB : ParentClass
public override string Method1()
return "Class B - Method1";
public override string Method2()
return "Class B - Method2";
public override string Method3()
return "Class B - Method3";
public static class MainClass
public static void Main()
ParentClass instA = new ClassA();
ClassB instB = new ClassB();