O poço 'Abstract Interface' é uma construção Lexical: http://en.wikipedia.org/wiki/Lexical_analysis .
É exigido pelo compilador, você também pode escrever interface
.
Bem, não se preocupe muito com a construção lexical da linguagem, pois eles podem tê-la colocado para resolver alguma ambiguidade de compilação que é denominada casos especiais durante o processo de compilação ou, para alguma compatibilidade com versões anteriores, tente se concentrar na construção lexical principal.
A essência da `interface é capturar algum conceito abstrato (idéia / pensamento / pensamento de ordem superior etc.) cuja implementação pode variar ... ou seja, pode haver uma implementação múltipla.
Uma interface é um tipo de dados abstrato puro que representa os recursos do objeto que está capturando ou representando.
Os recursos podem ser representados pelo espaço ou pelo tempo. Quando eles são representados pelo espaço (armazenamento em memória), significa que sua classe concreta implementará um campo e método / métodos que operarão nesse campo ou no tempo, o que significa que a tarefa de implementar o recurso é puramente computacional (requer mais relógios da CPU para processamento), para que você tenha uma troca entre espaço e tempo para a implementação do recurso.
Se sua classe concreta não implementar todos os recursos, ela se tornará novamente abstrata porque você implementou seu pensamento, ideia ou abstração, mas não está completa, especifique-a por abstract
classe.
Uma classe concreta será uma classe / conjunto de classes que capturará completamente a abstração que você está tentando capturar na classe XYZ.
Então o padrão é
Interface--->Abstract class/Abstract classes(depends)-->Concrete class