This week's book giveaway is in the General Computing forum. We're giving away four copies of Arduino in Action and have Martin Evans, Joshua Noble, and Jordan Hochenbaum on-line! See this thread for details.
1. interface is not an object, while abstract class is..
2 all variable in an interface is public static final, even you just declare int i, automatically it will be assigned into public static final int i.. but abstract class' variable is depending on what you've declared
Maybe there are plenty of differences.. But this is obviously the basic different.
The key difference between abstract class and interface is that abstract class is still a class, and should be used if it has a place within a class hiearchy. For example, if you're creating a graphical program that draws shapes, you will have a abstract class "Shape" and concrete subclasses "Rectangle", "Triangle", etc. And to make objects within the app draggable, you will create a "Draggable" interface that's implemented by all shapes, and other non-shapes objects.
In other words, interface represents a capability that may be implemented by classes in any hierarchy. Whereas abstract class should be used if there's a natural "is-a" relationship and the capability of the abstract class is specific to its subclasses.