Eh bien, «Abstract Interface» est une construction lexicale: http://en.wikipedia.org/wiki/Lexical_analysis .
Il est requis par le compilateur, vous pouvez également écrire interface
.
Eh bien, n'entrez pas trop dans la construction lexicale du langage car ils pourraient l'avoir mis là pour résoudre une ambiguïté de compilation qui est qualifiée de cas spéciaux pendant le processus de compilation ou pour une certaine compatibilité descendante, essayez de vous concentrer sur la construction lexicale de base.
L'essence de `interface est de capturer un concept abstrait (idée / pensée / pensée d'ordre supérieur, etc.) dont la mise en œuvre peut varier ... c'est-à-dire qu'il peut y avoir plusieurs mises en œuvre.
Une interface est un type de données purement abstrait qui représente les caractéristiques de l'objet qu'elle capture ou représente.
Les entités peuvent être représentées par l'espace ou par le temps. Lorsqu'elles sont représentées par l'espace (stockage en mémoire), cela signifie que votre classe concrète implémentera un champ et des méthodes / méthodes qui fonctionneront sur ce champ ou en fonction du temps, ce qui signifie que la tâche d'implémentation de la fonctionnalité est purement computationnelle (nécessite plus d'horloges cpu pour le traitement) afin que vous ayez un compromis entre l'espace et le temps pour la mise en œuvre des fonctionnalités.
Si votre classe concrète n'implémente pas toutes les fonctionnalités, elle redevient abstraite parce que vous avez une implémentation de votre pensée ou idée ou de l'abstraction mais qu'elle n'est pas complète, vous la spécifiez par abstract
classe.
Une classe concrète sera une classe / un ensemble de classes qui capturera pleinement l'abstraction que vous essayez de capturer la classe XYZ.
Le motif est donc
Interface--->Abstract class/Abstract classes(depends)-->Concrete class