1. an interface only contains empty methods (method declarations), which must be implemented in the classes that implement the interface - it provides no code. An abstract class may contain code in it's methods or functions.
2. a class can implement multiple interfaces while it can only extend one abstract class
3. an interface can be added to a third party class while a third party class has to be rewritten to extend the abstract class
4. talking about speed, interfaces are slower that abstract classes because they require extra redirection to the actual implemented methods
5. extending your code in an interface would mean that you have to find all the classes that implement it and make the necessary modifications there, while adding new methods or variables to an abstract class won't hurt any extension of it.
there are alot more differences, but this should give you the general idea
--------------------------
"two wrongs don't make a right, but three lefts do" - the unknown sage