Difference Between Abstract Class and Interface ( With Table)

As we all know, abstraction refers to the interior implementation of the feature and solely showing the practicality to the users. i.e. what it works (showing However, the interface offers complete abstraction in Java, which abstract categories cannot do.

Abstract Class vs Interface

 The main difference between Abstract Class and Interface is that the associate interface will extend another Java interface solely; the associate abstract category will develop another Java category and implement multiple Java interfaces.Members of a Java interface differs public by default. A Java abstract category will have category members like personal, protected, etc.

Difference Between Abstract Class and Interface

Abstract class is a class that has the abstract keyword in its declaration. At least one abstract method, i.e. methods without a body, should be present in abstract classes. It may have a variety of concrete methods.

You can use abstract classes to generate blueprints for concrete classes. However, the abstract method must be implemented by the inheriting class.

The interface is a blueprint for a class that can be used to create it. There are no concrete methods in the interface (methods that have code). An interface’s methods are all abstract methods.

It is not possible to create an interface. Classes that implement interfaces, on the other hand, can be instantiated. Instance variables are never used in interfaces, however public static final variables (also known as constant class variables) can be used.

What is Abstract Class?

An abstract category is outlined as a category that’s declared with the “abstract” keyword. It’s a group of common taxonomic group characteristics that ought to embody a minimum of one abstract technique. The associate abstract category will have multiple concrete strategies. Programmers exploitation Java eight and later can even incorporate default and static strategies..

Abstraction could be a method of activity the implementation details and showing practicality solely to the user.

Another method shows only essential things to the user and hides the interior details, for instance, causing SMS wherever you text and send the message. You do not understand the internal process concerning message delivery.

Abstraction permits you to specialize in what the thing will rather than it will it.

What is Interface?

An interface in Java could be a blueprint of a category. It’s static constants and abstract strategies.

The interface in Java could be a mechanism to realize abstraction. There may be abstract strategies within the Java interface, not the technique body. It’s accustomed succeed abstraction and multiple inheritances in Java. Interface is a blueprint accustomed to implementing a category. Unlike the abstract class, it’s a group of conceptual strategies and contains no concrete plan

In different words, {you will| you’ll | you’ll be able to} say that interfaces can have abstract strategies and variables. It cannot have a way body.

Java Interface conjointly represents the IS-A relationship.

Comparison Table between Abstract Class and Interface

 Parameters Of DifferentiationAbstract ClassInterface
Access ModifiersCan have access modifierDoes not have access modifiers, and everything defined inside is assumed to be a public modifier
ConstructorsCan declare constructors and destructorsCannot declare constructors or destructors
Data FieldsCan have data fieldsCannot have data fields
Data Member AccessibilityCan have any type of class member (e.g., public, private, protected)Can only have public members, by default
Defining FieldsUsers can define both fields and constantsCannot define fields
Extension LimitsExtends just one class or one abstract class at a time. Can extend another regular (or concrete) class.Can extend any number of interfaces. However, it can only extend interfaces.

Main Differences Between Abstract Class and Interface

  1. Type of strategies: Interface will have solely abstract methods. associate abstract category will have abstract and non-abstract strategies. From Java eight, it will have default and static strategies conjointly.
  2. Final Variables: Variables declared during a Java interface area unit by default final. associate abstract category could contain non-final variables.
  3. Type of variables: Abstract category will have final, non-final, static and non-static variables. The interface has solely static and final variables.
  4. Implementation: Abstract category will give the implementation of the interface. Interface can’t give the implementation of associate abstract category.
  5. Inheritance vs Abstraction: A Java interface may be enforced exploitation the keyword “implements” associated an abstract category may be extended exploitation the keyword “extends”.


An abstract class allows you to create functionality that subclasses can implement or override, whereas an interface allows you to state but not implement functionality. While a class can only extend one abstract class, it can implement several interfaces.


  1. https://dl.acm.org/doi/abs/10.1145/1040305.1040314
  2. https://books.google.com/books?hl=en&lr=&id=8M3F_sSSvWkC&oi=fnd&pg=PR13&dq=+interface+java&ots=Qo15NiH18i&sig=Y6OESYd5a6G709ynnLGB4Ry97yU