Using sealed classes is a new concept added in C#. It is
difficult to say when we should use an abstract class and when we should use an
interface. In general defining an abstract class without any implementation
means with abstract members has the same effect as defining an interface;
however there are a lot more differences than similarities between an abstract
class and an interface. In this article I am not only trying to describe the
concept of abstract classes, interfaces, and sealed classes, but also describe
in what situation we should use which and how. The sample code snippets have
been written in C#.