In [[computer science]], anAn '''interface''' is a specification that exists between software components that specifies a selected means of interaction, by means of properties of other software modules, which [[abstraction|abstract]] and [[Information hiding|encapsulate]] their data.