Main difference is methods of a Java interface are implicitly abstract and cannot have implementations.
A Java abstract class can have instance methods that implements a default behavior. Variables declared in a Java interface is by default final.
An abstract class may contain non-final variables.
Members of a Java interface are public by default.
A Java abstract class can have the usual flavours of class members like private,protected, etc..
Java interface should be implemented using keyword “implements”; A Java abstract class should be extended using keyword “extends”.
An interface can extend another Java interface only, an abstract class can extend another Java class and implement multiple Java interfaces.
A Java class can implement multiple interfaces but it can extend only one abstract class.
Interface is absolutely abstract and cannot be instantiated; A Java abstract class also cannot be instantiated, but can be invoked if a main() exists.
Aug 28, 2013