What is the difference between an interface and an abstract class?
An interface is not a class. It contains member declarations only. An abstract class can have declarations and implementations. Members of an interface must be public, abstract classes may contain private members. Multiple interfaces can be implemented by a class, a single abstract class can be inherited by a non-abstract class.