An interface is a completely “abstract class” that is used to group related methods with empty bodies:
To access the interface methods, the interface must be “implemented” (kinda like inherited) by another class with the implements keyword (instead of extends). The body of the interface method is provided by the “implement” class:
Interface vs Abstract Class
An interface cannot have state, whereas the abstract class can have state with instance variables.
Abstract Class
An abstract class in Java is a class that cannot be instantiated, but can be subclassed.
It can have both abstract and non-abstract methods. A normal (non-abstract) class cannot have abstract methods.