Interfaces - These are Classes which contain only declaration.
These can be used only when you want specifc varaibles or method names to be used.
Eg : - 1) You want some constant to be used all over in code.
It can be declared in the interface.
2) Assume there is a class A that calls "calculate" method of all the the associated classes. The Class A can dynamically make the object of the Associated class and call this method.
Abstarct Classes - This call can be used to provide some reusable functionality.
1) You need a place where the connection if required for the database, We can write this method in an Abstract class and then all the inheriting classes can call this method to fetch the connection.
2) In the same class i can provide some fixed functions(select(), delete()..) which need to be overridden .
Abstarct classes can help to implement the DAO
Pattern.