Encontram-se nas secções seguintes exemplos do conceito de interface. A primeira secção ilustra a maior ou menor capacidade de definição do conceito em duas linguagens:
A definição de uma interface, sintacticamente, corresponde a um elenco de métodos, indicando-se, além do nome do método, apenas os tipos dos argumentos e do retorno. É admissível a definição de constantes: identificadores como os dos atributos de qualquer classe. No entanto, estes "atributos" são implicitamente static
e final
.
Considere-se a interface Aluno
que especifica os métodos a fornecer por qualquer aluno.
interface Aluno {
void estudar();
}
De modo análogo, considere-se a definição da interface Docente
:
interface Docente {
void leccionar();
}
Utilizando as duas interfaces anteriores e definindo alguns métodos adicionais, é possível modelar a interface de um aluno de doutoramento que, por hipótese, dá aulas (por exemplo, como forma de pagar as propinas).
interface Doutorando extends Aluno, Docente {
void escreverTese();
void defenderTese();
}
Como em C++ não há o conceito de interface, para definir os conceitos acima é necessário recorrer ao conceito mais próximo: classes virtuais puras (i.e., classes abstractas). O exemplo Java acima, agora aproximado em C++, seria então escrito da seguinte forma.
Classe ("interface") aluno:
class Aluno {
public:
void estudar() = 0;
};
Classe ("interface") docente:
class Docente {
public:
void leccionar() = 0;
};
Classe ("interface") doutorando:
class Doutorando : public Aluno, Docente {
public:
void escreverTese() = 0;
void defenderTese() = 0;
};
Note-se que, apesar de se poder aproximar o conceito de interface através de classes abstractas, os dois conceitos diferem substancialmente. Note-se ainda que o paralelo para as classes abstactas de C++ em Java são igualmente classes abstractas (definidas utilizando a palavra chave abstract) e não as interfaces.