I will explain this using use. An abstract class can be used when there is only one hierarchy, additionally without a default implementation; while an interface can be used hierarchically (horizontally), often called behavior.
The interface is also an abstraction, and in C # replaces inheritance with several classes, so this can be confusing, but you have to distinguish when to use what.
Hope this helps, Robert
source share