As far as i remember, we can write method bodies into abstract classes:
... public void printHello() { System.out.println("Hello"); } ...
But we can not do this in interfaces. So when i have some common code to use between all specialized versions of my classes but also have interface requirements (inherited classes are required to have their own implementation of some methods), i will prefer to use abstract classes.
If there is no common functionality, i will just use an interface.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
* Use interface if you don't want to implement any of the member functions. This implies. - The class implementing the interface must implement all of its functions.
* In abstract class you need not define/implement all the functions like interface. This can be used where you can to define/implement some method and allow user to implement the rest(if there any unimplemented funtions..since there an abstract class can define/implement all the functions).
Interface and abstract class can be used for multiple inhertence. (OOP concept)