Skip to main content
1 of 6
Ed James
  • 1.3k
  • 1
  • 10
  • 14

Version control is a good reason to prefer an abstract class over an interface.

The .NET Framework has many abstract classes in places where an immutable interface would cause version issues should the public interface need to change.

For example, many classes outside the .NET Framework inherit interface and behaviour from the System.ComponentModel.PropertyDescriptor class. Should Microsoft decide the public interface of PropertyDescriptor must change, they can simply implement the changes and release a new version of the .NET Framework and the many hundreds of existing PropertyDescriptor implementations will be unaffected. If an interface was chosen instead of an abstract class, the only safe way to introduce a new public method would be to introduce a new interface, complicating the client code.

Ed James
  • 1.3k
  • 1
  • 10
  • 14