Bene, "Abstract Interface" è un costrutto lessicale: http://en.wikipedia.org/wiki/Lexical_analysis .
È richiesto dal compilatore, puoi anche scrivere interface.
Beh, non entrare troppo nel costrutto lessicale del linguaggio in quanto potrebbero averlo messo lì per risolvere alcune ambiguità di compilazione che vengono definite casi speciali durante il processo di compilazione o per una certa compatibilità con le versioni precedenti, prova a concentrarti sul costrutto Lexical di base.
L'essenza di `interfaccia è catturare alcuni concetti astratti (idea / pensiero / pensiero di ordine superiore ecc.) La cui implementazione può variare ... cioè, ci può essere implementazione multipla.
Un'interfaccia è un tipo di dati astratto puro che rappresenta le caratteristiche dell'oggetto che sta acquisendo o rappresentando.
Le caratteristiche possono essere rappresentate dallo spazio o dal tempo. Quando sono rappresentati dallo spazio (memoria) significa che la tua classe concreta implementerà un campo e un metodo / metodi che opereranno su quel campo o nel tempo, il che significa che il compito di implementare la funzione è puramente computazionale (richiede più orologi CPU per l'elaborazione) in modo da avere un compromesso tra spazio e tempo per l'implementazione delle funzionalità.
Se la tua classe concreta non implementa tutte le funzionalità, diventa di nuovo astratta perché hai un'implementazione del tuo pensiero o idea o astrattezza ma non è completa, la specifichi per abstractclasse.
Una classe concreta sarà una classe / serie di classi che cattureranno completamente l'astrattezza che stai cercando di catturare la classe XYZ.
Quindi il modello è
Interface--->Abstract class/Abstract classes(depends)-->Concrete class