Possible Duplicates:
interface and abstract class.
Abstract classes vs Interfaces
Can anyone tell me when one should use an abstract class and when one should use an interface with sample scenarios?
Possible Duplicates:
interface and abstract class.
Abstract classes vs Interfaces
Can anyone tell me when one should use an abstract class and when one should use an interface with sample scenarios?
You should use an abstract class if you need to supply a base implementation.
Otherwise, use an interface.
If you're defining behavior (like IEnumerable
, since a List
acts like an IEnumerable
), then use an interface, but if you're defining a kind of object (an IS-A) relationship, use an abstract class (like Stream
-- since a MemoryStream
IS-A Stream
).
When you want to provide an implementation of a method/set of methods but don't want people to directly instantiate your parent class, use an Abstract Class.
If you want to define what members a class must interface, but not provide any implementation, use an Interface.