Ones more with explanation.
The abstract class could not be construct every time.... It could not be possible at all: We're using inheritance from library classes.
We have a class named MyApplet (for example). It must be extended from Applet. In Java you can't use multiple inheritance so you can't force implemetation of a methods from abstract class.Could be difficult: The parent would be evidently artificial.
Capturing similarities between unrelated classes without artificially forcing a class relationship.
We should consider the rigth OO design.
What does an Interface have a purely abstract class doesn't have?
No, that's not good question. Abstract class is fairly the same but with another use. There are items above that explain it...
This conversation gets from developing to philosophy. And the truth is relative ;-).
In fine we're all on the same boat. We develop in Java, and Sun decided to "substitute" problematic multiple inheritance with interface. But another point is that interface has its problems too. Consider two interfaces with the same method that differs only in return type and the class that implements them both...