That which allows communication between two things, as a user and a program, a program and a library, or one machine and another.
In Java, a poor substitute for multiple inheritance.