Abstract classes are classes that cannot be instantiated. It serves as the base or parent class for all other classes, known as derived classes. Members may be abstract or non-abstract. The descendant classes must implement members that are defined as abstract.
Java interfaces work as contracts between classes or structures that implement them, ensuring that all interface members are implemented. Interfaces, unlike abstract classes, do not operate as parent entities and consist only of member declarations, with each member being implicitly public and abstract.
The interface keyword is used to declare a new interface. It provides an entire abstraction, which implies that all methods in an interface are defined with an empty body, and all fields are public, static, and final by definition. A class that implements an interface must include all of the methods specified in the interface.
In the same way that an interface can extend another interface, a class can extend another class. However, a class can only extend to another interface; this cannot be done in reverse.
The keyword extends allows one interface to inherit from another. A class that implements an interface that is derived from another interface has to provide an implementation for every method that the interface inheritance chain requires.