Java Developers
Group for Java developers and programmers. Ask questions and get answers related to Java programming
252 Members
Join this group to post and comment.
Vijay Khatri
Vijay Khatri
Computer Science
13 Feb 2019

Difference Between abstract classes and interfaces:

Here is the difference between abstract classes and Interfaces:

Abstract ClassInterfaces
An abstract class can provide complete, default code and/or just the details that have to be overridden.An interface cannot provide any code at all, just the signature.
In the case of abstract class, a class may extend only one abstract class.A Class may implement several interfaces.
An abstract class can have non-abstract methods.All methods of an Interface are abstract.
An abstract class can have instance variables.An Interface cannot have instance variables
An abstract class can have any visibility: public, private, protected.Interface visibility must be public (or) none.
If we add a new method to an abstract class then we have the option of providing default implementation and therefore all the existing code might work properlyIf we add a new method to an Interface then we have to track down all the implementations of the interface and define an implementation for the new method
An abstract class can contain constructorsAn Interface cannot contain constructors
Abstract classes are fastInterfaces are slow as it requires extra indirection to find corresponding method in the actual class

Archana Priyadarshini
Archana Priyadarshini
Computer Science
1mo ago

Type of methods:Interface can have only abstract methods. Abstract class can have abstract and non-abstract methods. From Java 8, it can have default and static methods also.

Final Variables: Variables declared in a Java interface are by default final. An abstract class may contain non-final variables.

Type of variables: Abstract class can have final, non-final, static and non-static variables. Interface has only static and final variables.

Implementation: Abstract class can provide the implementation of interface. Interface can’t provide the implementation of abstract class.

Inheritance vs Abstraction: A Java interface can be implemented using keyword “implements” and abstract class can be extended using keyword “extends”.

Multiple implementation: An interface can extend another Java interface only, an abstract class can extend another Java class and implement multiple Java interfaces.

Accessibility of Data Members: Members of a Java interface are public by default. A Java abstract class can have class members like private, protected, etc.