When would you use an interface over an abstract class vise versa?

The biggest difference between the two (to me) is that interfaces don't contain implemented methods. They only define the structure that the inheriting class must take, whereas abstract classes can be partially or fully implemented with complete methods. Interfaces are usually said to be a contract that the developer must adhere to - the methods you need to create are specified but you have complete freedom as to how they are implemented.
The choice to use one of the other comes down to how you intend the class/interface to be used.
Things to consider are that interfaces cannot be changed after being released (without breaking all code that inherits from them), abstract classes can be extended/altered and the inheriting classes immediately gain the new functionality.
This link at MSDN gives some good examples of when to use one over the other.

commented: Well explained! +15
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.