Interface (programação orientada a objetos)
Em algumas linguagens de programação, o termo interface é uma referência à característica que permite a construção de interfaces que isolam do mundo exterior os detalhes de implementação de um componente de software.
Um exemplo clássico de utilização de interfaces é o do sistema operacional que, através de uma interface de programação de aplicativos, permite que os programas utilizem os recursos do sistema (memória, CPU e etc) sem que os seus detalhes de implementação sejam conhecidos do programador. Este esquema isola e protege o sistema operacional de eventuais erros cometidos pela aplicação. Os componentes de software utilizam interfaces padronizadas para criar uma camada de abstração que facilite a reutilização e a manutenção do software. Neste cenário, a interface de um módulo de software A {\displaystyle A} deve ser mantida em separado da sua implementação e qualquer outro módulo B {\displaystyle B} , que interaja com A {\displaystyle A} (cliente de A {\displaystyle A} ), deve ser forçado a fazê-lo apenas através da interface. Este mecanismo permite que no caso de uma alteração em A {\displaystyle A} , o módulo B {\displaystyle B} continue funcionando; desde que a utilização do módulo A {\displaystyle A} pelo módulo B {\displaystyle B} satisfaça as especificações da interface. (Ver também o princípio da substituição de Liskov).
O princípio da interface é um alicerce da programação modular que, por sua vez, é precursora e parte da programação orientada a objeto. Na programação orientada a objeto, a interface de um objeto consiste de um conjunto de métodos que um objeto deve suportar. É importante notar que as variáveis de instância não fazem parte da interface de um objeto pois devem ser acessadas somente pelos "métodos de acesso". Historicamente, as interfaces são derivadas dos arquivos de cabeçalho da Linguagem C (normalmente arquivos com extensão ".h") que separam o contexto sintático de um módulo (ou protótipos de funções) da sua implementação. Algumas linguagens de programação orientadas a objeto exigem que a interface do objeto seja especificada de forma separada da implementação do objeto, enquanto outras não fazem esta exigência. Por exemplo, em linguagens de programação como Objective-C, a classe do objeto define a sua interface e é declarada em um arquivo de cabeçalho (header em inglês) e, por outro lado, a implementação da classe é mantida em um arquivo chamado de "arquivo fonte". Devido à tipagem dinâmica existente na Objective-C, que permite o envio de mensagens para qualquer objeto, a interface de uma classe é importante para determinar para quais métodos um objeto de uma classe responde.
Suporte à interfaces
Em geral toda linguagem permite a implementação de interfaces. Mas algumas linguagens possuem "construções" específicas para esse fim. Por exemplo:


