Skip to main content

Posts

Showing posts from October, 2006

Should I use an abstract class or an interface? at C# Online.NET (CSharp-Online.NET)

Visual C# Best Practices

* Use abstract classes and interfaces in combination to optimize your design trade-offs.


Use an abstract class

* When creating a class library which will be widely distributed or reused—especially to clients, use an abstract class in preference to an interface; because, it simplifies versioning. This is the practice used by the Microsoft team which developed the Base Class Library. (COM was designed around interfaces.)

* Use an abstract class to define a common base class for a family of types.

* Use an abstract class to provide default behavior.

* Subclass only a base class in a hierarchy to which the class logically belongs.


Use an interface

* When creating a standalone project which can be changed at will, use an interface in preference to an abstract class; because, it offers more design flexibility.

* Use interfaces to introduce polymorphic behavior without subclassing and to model multiple inheritance—allowing a specific type to …