À retenir
- C'est le sommet d'une hiérarchie d'interfaces.
- Elle définit les méthodes de base que toutes les interfaces descendantes posséderont.
- Elle favorise la réutilisation du code et une organisation logique des fonctionnalités.
En programmation orientée objet, une superinterface est une interface "parente" dont une ou plusieurs autres interfaces héritent. Elle sert de modèle de base en définissant un ensemble de capacités communes que les interfaces plus spécialisées vont reprendre et enrichir. On peut la comparer à un contrat général (ex: "Contrat de Transport") qui est précisé par des contrats plus spécifiques (ex: "Contrat de Transport Routier").
Étymologie
Le terme vient du préfixe latin super signifiant « au-dessus » et du mot interface (jonction entre deux éléments). Il désigne la position hiérarchique supérieure d'une interface dans une structure d'héritage.
Exemples d'usage
- En Java, l'interface
Collectionest la superinterface de l'interfaceList. - Une interface
AppareilConnectepeut servir de superinterface pour les interfacesAmpouleIntelligenteetThermostatConnecte.
Cas d'usage
On utilise les superinterfaces pour structurer de grands projets logiciels. Elles permettent de manipuler différents types d'objets via un socle commun (le polymorphisme), facilitant ainsi la maintenance et l'évolution du code sans avoir à tout réécrire.
Bonnes pratiques
Une superinterface doit rester générique et ne pas être surchargée de méthodes trop spécifiques. Si vous commencez à y ajouter des fonctions qui ne servent qu'à une seule de ses interfaces filles, c'est le signe qu'il faut probablement scinder votre hiérarchie.
Synonymes
Antonymes
Conseil
Pour bien visualiser le concept, dessinez un schéma en forme d'arbre : la superinterface est la branche principale, et les interfaces qui en découlent sont les rameaux. Si vous débutez, utilisez des superinterfaces pour regrouper des comportements très larges, comme Affichable ou Sauvegardable.
Questions fréquentes
Une interface peut-elle avoir plusieurs superinterfaces ?
Oui, dans de nombreux langages comme Java ou C#, une interface peut hériter de plusieurs autres interfaces en même temps, contrairement aux classes.
Quelle est la différence avec une classe parente ?
Une classe parente contient souvent du code déjà écrit (logique métier), tandis qu'une superinterface ne contient généralement que des signatures de méthodes (ce qu'il faut faire, pas comment le faire).