Differences between abstract class and interface in Java

In Java, abstraction is achieved using Abstract classes and interfaces. Both contains abstract methods which a child class or implementing class has to implement. Following are the important differences between abstract class and an interface.

Sr. No. Key Abstract Class Interface
1 Supported Methods Abstract class can have both an abstract as well as concrete methods. Interface can have only abstract methods. Java 8 onwards, it can have default as well as static methods.
2 Multiple Inheritance Multiple Inheritance is not supported. Interface supports Multiple Inheritance.
3 Supported Variables final, non-final, static and non-static variables supported. Only static and final variables are permitted.
4 Implementation Abstract class can implement an interface. Interface can not implement an interface, it can extend an interface.
5 Keyword Abstract class declared using abstract keyword. Interface is declared using interface keyword.
6 Inheritance Abstract class can inherit another class using extends keyword and implement an interface. Interface can inherit only an inteface.
7 Inheritance Abstract class can be inherited using extends keyword. Interface can only be implemented using implements keyword.
8 Access Abstract class can have any type of members like private, public. Interface can only have public members.

Example of Abstract Class vs Interface

public class JavaTester {
   public static void main(String args[]) {
      Animal tiger = new Tiger();
      Cat lion = new Lion();
interface Animal {
   public void eat();
class Tiger implements Animal {
   public void eat(){
      System.out.println("Tiger eats");
abstract class Cat {
   abstract public void eat();
class Lion extends Cat{
   public void eat(){
      System.out.println("Lion eats");


Tiger eats
Lion eats 

Updated on: 08-Dec-2023

5K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started