abstract class and interfaces are both language construts that are designed for different purposes, hence having different merits.
atstract class has been defined in language C++ already, while interface was introduced later (in VC?).
In Java, interface can be used to implement multi-inherence as said in previous email. It should be used to model behavor and it carries no implementation at all. Hence it can be implemented by any classes.
Abstract class is used in situations where you have common behavors shared by multiple sub-classes. Hence its use is very limited.