Difference Between Abstract Class and Interface in Java (With Table)

Abstract classes and interfaces are two programming concepts that are similar in many ways. Both are used to define a set of methods and properties that are common to classes that implement that interface or inherit from that abstract class. However, there are also some important differences between the two.

Abstract Class vs Interface

The main difference between Abstract classes and Interface is that Abstract classes are classes that contain only abstract methods. An interface, on the other hand, is a construct that contains only abstract methods and serves as a contract for classes that extend the interface.

Abstract classes are a type of class that is used to define the structure of other classes. They don’t provide any functionality but instead serve as a framework that other classes can build on. Abstract classes can be a great way to provide a common set of functionality to a group of classes without requiring those classes to be in the same programming language or to be in a specific location in the codebase.

Interfaces in Java are a way to define the behaviour of an object without defining its implementation. The benefit of using interfaces is that it allows for code reuse and extensibility. Interfaces are a way to declare what methods and fields an object should have. They’re the definition of what a thing looks like on paper, not what it looks like in code.

Comparison Table Between Abstract Class and Interface in Java

Parameters of ComparisonAbstract ClassInterface
Abstract Methods/ Non- Abstract MethodsBoth Abstract and Non-Abstract MethodsOnly Abstract Methods
VariablesFinal, Non-Variable, Static and Non-Static VariablesFinal Variables and Static Variables
ExecutionAn abstract class can give the execution of the Interface.Interface can’t give the execution of an abstract class.
AvailabilityPrivate or protectedPublic
Different executionsCan extend other classes and Java interfaces.Can only extend various Java interfaces.

What is Abstract Class in Java?

An abstract class is a class that contains common behaviour, but cannot be directly instantiated. Instead, an abstract class provides a blueprint for creating instances of its subclasses. Each subclass is free to add its own specific behaviour to the features provided by the abstract class. This enables a single class to be reused in multiple situations, while still maintaining its identity and purpose.

Abstract classes are a special type of class. An abstract class contains member variables and methods that must be defined by all objects that are instances of that class. There are two ways to declare an abstract class: using the keyword abstract and using the keyword final. Using the keyword final is the preferred way to declare an abstract class since it prevents code from being generated that might violate a design smell.

An abstract class is a class that contains methods and variables, but cannot be instantiated. The class is defined, but cannot be used. Abstract classes are used to create subclasses. When you create an abstract class, you are defining the characteristics of a subclass, but the class cannot be used until it is made into a subclass.

What is Interface in Java?

An interface is a set of requirements that must be met to use a class or a group of classes. An interface declares a contract between the implementer of the interface and the client of the interface. The client of the interface must provide the implementer of the interface with the necessary information to meet the requirements of the interface. This information is the implementation details of what is required to meet the requirements of the interface.

An interface in the Java programming language is a set of Juan (body) and methods (verbs) that specify the behaviour and attributes of objects. Java interfaces can be used to define abstract classes. When used as the base for an inheritance, interfaces provide a way for subclasses to override methods and provide their own implementation. This is useful for creating polymorphic behaviour in a Java program, which can be very useful in creating generic classes.

An interface is a contract or set of requirements that define the behaviour or capabilities of a class, module, or module subset. The Java programming language defines interfaces as the contract between an object (a class) and its environment. This means that an interface defines the behaviour or capabilities that a class, package, or module may provide to its environment. This environment may be another class, another package, a static method or field, and so on.

Main Differences Between Abstract Class and Interface in Java

  1. An Abstract Class uses both abstract and non-abstract methods while Interface ises only Abstract methods.
  2. An abstract class can use Final, Non-Variable, Static and Non-Static Variables whereas, an interface can only use final and static variables.
  3. An abstract class can give the execution of the Interface. On a contrary, Interface can’t give the execution of an abstract class.
  4. Abstract classes are available for private classes as well whereas Interface is only for the public.
  5. An Abstract Class can extend other classes and Java interfaces. On the other hand, Interface Can only extend various Java interfaces.


An interface is a set of abstract or invariant methods and/or data types that are shared by all objects that implement the interface. On the other hand, an abstract class is a class that contains only abstract methods and data types. The difference between an interface and an abstract class lies in the visibility of the methods and data types within the class.

Methods and data types declared within an interface are accessible by any object that implements the interface, while methods and data types defined within an abstract class can be accessed only by objects that derive the abstract class.

An interface is a contract of what should be done by a class in order to be an interface. An interface specifies what methods a class must implement to be an interface. A class that is not an interface is known as a concrete class. An abstract class is a class that inherits traits from another class.


  1. http://www.cqvip.com/qk/97969a/200608/22501314.html
  2. https://link.springer.com/content/pdf/10.1007/978-1-4302-0140-3_12.pdf