difference between z

Differences between Abstract Class and Interface In Java

Differences between Abstract Class and Interface In Java

In Java, there are two main ways to create a class: abstract and non-abstract. An interface is similar to an abstract class, but it cannot have any concrete methods. This article will discuss the differences between abstract classes and interfaces in Java.

What is Abstract Class In Java?

Abstract classes are a pivotal part of Java, and they are used in a variety of ways. Abstract classes allow you to create a skeleton of a class, which can be fleshed out later by concrete subclasses. This is useful when you want to provide a common base class for a group of related classes, but the details of the implementation will differ between subclasses.

Abstract classes can also be used to define interfaces, which specify the behavior that a class must implement. However, unlike concrete classes, abstract classes cannot be instantiated. This means that you cannot create objects of an abstract class type. Instead, you must create an object of a concrete subclass that extends the abstract class. Abstract classes are an essential part of Java programming, and they provide a great deal of flexibility in terms of code reuse and modularity.

What is Interface In Java?

Interface In Java is a blueprint of a class that has static constants and abstract methods. It is used to achieve abstraction and multiple inheritance in Java. Interface also represents IS-A relationship. It cannot be instantiated just like the abstract class. However, an Interface can be implemented using the keyword “implements.” A class can implement more than one Interface at a time. Interface has only static and final variables.

  • Interface is used to achieve loose coupling so that the programs can work together without depending too much on each other’s implementation details. Interface provides full abstraction; hence, all the methods in Interface must be implemented in the child class. Interface is slow as it requires extra indirection for each method call.
    It increases the number of a class’s supertypes. Therefore, it makes harder to understand the code as it has too many dependencies on other classes. In real-world scenario, Interface is used in various places such as JDBC drivers, Listener objects, etc.
  • Interface is also used in Adapter classes or Wrapper classes wherein multiple interfaces are implemented by a single class to give content accessed through a single interface to outside world while hiding actual implementation details from them. Interface is widely used in Java programming language and plays an important role in its ecosystem.

Differences between Abstract Class and Interface In Java

Abstract Class and Interface In Java both are used to achieve abstraction where we can declare the abstract methods that are common for all classes. Abstract class is a class which is declared using the abstract keyword. Abstract methods are the methods that are declared in the Abstract Class but not implemented in it, i.e., these methods must be implemented by the concrete subclasses.

  • So, an Abstract class can have both abstract and non-abstract methods. An Interface is also used to achieve abstraction where we can declare the abstract methods that are common for all classes. Interfaces are declared using the interface keyword. Abstract methods in an Interface are implicitly public and final, i.e., we cannot change the access modifier of an abstract method in an Interface.
  • Any class that implements an Interface must implement all the Abstract methods of that interface otherwise, that class must be declared as an Abstract class. Abstract classes can have static, final and non-final variables whereas Interfaces cannot have any variables except constants(which must be declared as static and final). A class can implement more than one Interface but it can extend only one Abstract class.
  • If a class implements an interface then it is not necessary to implement all the methods of that interface but if it extends an Abstract class then it has to implement all the abstract methods of that Abstract class. An Abstract class can have a constructor whereas Interfaces cannot have a constructor. An Abstract class doesn’t support multiple inheritances but an Interface supports multiple inheritances.

We cannot instantiate an Abstract class but we can create objects by using Interface references(upcasting). In short, we can say that Abstract Class is a blueprint for a group of similar kind of classes with some common functionality while Interfaces are blueprints for classes with completely different hierarchy having some functionality in common.


In Java, an abstract class can be both a superclass and an interface. An interface cannot be a superclass. Abstract classes are useful when you want to enforce some functionality but don’t want clients to create objects of that class. Interfaces are useful when you want many classes to share common behavior without subclassing the same parent class over and over again.

Share this post

Share on facebook
Share on twitter
Share on linkedin
Share on email