I understand most of the differences between an interface and an abstract class. My question here is at what point is it more appropriate to use an interface instead of an abstract class.

The reason I'm asking this is because I've spent about 3 months writing this pretty complex open-ended (i.e. it uses plugins and will have an sdk) project that uses a large number of interfaces.

Looking back on it, I'm thinking that in many cases, it would be nice to implement defualt functionality for several members of several of the interfaces.

Is there increased language compatibility if I use interfaces? Or should I switch to abstract classes?

How would you tackle this problem?