Abstrat class is a super class that only define a generalized form that will be shared by all of its subclasses leaving it to each subclass to fill in the details.
Interface is a keyword to make a class fully abstract.
In any case the difference would be too small to be noticeable. The choice between choosing an Abstract class or an Interface is a design decision not a performance one.
1. Abstract class for tight coupling and interface for loose coupling. 2. Abstract classes does not support multiple inheritance but interfaces supports. 3. Abstract classes may have concrete methods and constructors but interfaces not. 4. Abstract classes take all the access specifiers but interfaces takes only public. 5. For design issues avoid to use abstract classes like ArrrayList al new arrayList();//avoid to write List l new arrayList();//preferable
Note: Program to interfaces only not to implementations
Abstract class must have at least one abstract method. Abstract keyword must be used for all the methods. Abstract class must have subclass.
Interface: Inheritance is possible in interface. Variables value must be defined in interface. Many interface can be implemented by a single class. Methods can be defined in interface and used in class.
Abstract classes are used when they have some sharable implementations and some specific methods left to subclasses to implement. Interface is used when there are no sharable implementation and the implementation changes frequently.
Abstract class can have methods which are abstract or not abstract. All methods of interface should be implemented unless the implementation is an abstract class.
Abstract class can be subclassed interface class can be implemented.