An interface defines the communication boundary between two entities, such as a piece of software, a hardware device, or a user.

It generally refers to an abstraction that an entity provides of itself to the outside.

This separates the methods of external communication from internal operation, and allows it to be internally modified without affecting the way outside entities interact with it, as well as provide multiple abstractions of itself.

It may also provide a means of translation between entities which do not speak the same language, such as between a human and a computer.

Because interfaces are a form of indirection, some additional overhead is incurred versus direct communication.

Read more here.