An interface is a tool or system that unrelated entities use to interact. In the context of Java programming language, an interface is an abstract type that defines methods, similar to a class, but unlike a class, it never implements methods. Instead, classes that implement the interface implement the methods defined by the interface. Interfaces are declared using the interface keyword and may only contain method declarations). They cannot be instantiated, but rather are implemented). A class that implements an interface must implement all of the non-default methods described in the interface, or be an abstract class). Object references in Java may be specified to be of an interface type, and in each case, they must either be null or be bound to an object that implements the interface).
Interfaces are useful for capturing similarities among unrelated classes without artificially forcing a class relationship. They allow a class to become more formal about the behavior it promises to provide and form a contract between the class and the outside world, which is enforced at build time by the compiler. If a class claims to implement an interface, all methods defined by that interface must appear in its source code before the class will successfully compile.
In summary, an interface is a way to define a protocol of behavior that can be implemented by any class anywhere in the class hierarchy. It is a contract between the class and the outside world that is enforced at build time by the compiler.