Difference between abstract class and interface

Abstract class and interface both are used to achieve abstraction where we can declare the abstract methods. Abstract class and interface both can't be instantiated.

But there are many differences between abstract class and interface that are given below.

Abstract classInterface
1) Abstract class can have abstract and non-abstract methods.Interface can have only abstract methods. Since Java 8, it can have default and static methods also.
2) Abstract class doesn't support multiple inheritance.Interface supports multiple inheritance.
3) Abstract class can have final, non-final, static and non-static variables.Interface has only static and final variables.
4) Abstract class can provide the implementation of interface.Interface can't provide the implementation of abstract class.
5) The abstract keyword is used to declare abstract class.The interface keyword is used to declare interface.
6) An abstract class can extend another Java class and implement multiple Java interfaces.An interface can extend another Java interface only.
7) An abstract class can be extended using keyword "extends".An interface can be implemented using keyword "implements".
8) A Java abstract class can have class members like private, protected, etc.Members of a Java interface are public by default.
9)Example:
public abstract class Shape{
public abstract void draw();
}
Example:
public interface Drawable{
void draw();
}

Simply, abstract class achieves partial abstraction (0 to 100%) whereas interface achieves fully abstraction (100%).

Example of abstract class and interface in Java

Let's see a simple example where we are using interface and abstract class both.

Test it Now

Output:

       I am a
       I am b
       I am c
       I am d

Abstract class vs Interface MCQ

1. Which of the following can an abstract class have that an interface cannot?

  1. Method declarations
  2. Final methods
  3. Static methods
  4. Constructor

Answer: D)

Explanation: An abstract class can have a constructor, whereas an interface cannot.


2. How many interfaces can a class implement in Java?

  1. Only one
  2. Two
  3. Multiple
  4. None

Answer: C)

Explanation: A class in Java can implement multiple interfaces.


3. Which feature is exclusive to interfaces and not available in abstract classes?

  1. Abstract methods
  2. Concrete methods
  3. Default methods
  4. Private methods

Answer: C)

Explanation: Interfaces in Java 8 and later can have default methods, which provide method implementations, unlike abstract classes that cannot have default methods.


4. Can an abstract class be instantiated directly?

  1. Yes
  2. No
  3. Only if it has a constructor
  4. Only if it has no abstract methods

Answer: B)

Explanation: An abstract class cannot be instantiated directly; it requires a subclass to provide implementations for its abstract methods.


5. Which of the following is true about abstract classes but not interfaces in Java?

  1. They can have abstract methods
  2. They can extend other classes
  3. They can be instantiated
  4. They can have static methods

Answer: B)

Explanation: Abstract classes can extend other classes, whereas interfaces cannot.


Next TopicPackage in Java