(1) An abstract class may contain complete or incomplete
methods. Interfaces can contain only the signature of a method
but no body. Thus an abstract class can implement methods but an
interface cannot implement methods. (2) An abstract class can
contain fields, constructors, or destructors and implement
properties. An interface cannot contain fields, constructors, or
destructors and it has only the property's signature but no
implementation. (3) An abstract class cannot support multiple
inheritances, but an interface can support multiple
inheritances. Thus a class may inherit several interfaces but
only one abstract class. (4) A class implementing an interface
has to implement all the methods of the interface, but the same
is not required in the case of an abstract Class. (5) Various
access modifiers such as abstract, protected, internal, public,
virtual, etc. are useful in abstract Classes but not in
interfaces. (6) Abstract classes are are faster than interfaces.