À retenir
- Elle complète une interface parente sans la modifier.
- Elle définit un contrat plus précis pour l'objet qui l'utilisera.
- Elle favorise la réutilisation et l'organisation logique du code.
Une sous-interface est une extension d'une interface existante qui en récupère toutes les règles tout en y ajoutant ses propres exigences. On peut l'imaginer comme un contrat spécialisé : si l'interface de base définit ce qu'est un « Véhicule », la sous-interface pourra définir ce qu'est un « VéhiculeÉlectrique », en conservant les bases (avancer, freiner) mais en ajoutant des obligations spécifiques (recharger la batterie).
Étymologie
Le terme est composé du préfixe sous- (indiquant une hiérarchie ou une dépendance) et du mot interface (de l'anglais interface, signifiant une zone de contact ou d'échange). En programmation, cela reflète la hiérarchie de l'héritage entre types de données.
Exemples d'usage
- En langage Java, l'interface
Listest une sous-interface deCollection: elle possède toutes les capacités de stockage, mais ajoute des règles sur l'ordre des éléments. - Une interface
Smartphonequi hérite d'une interfaceTelephonepour y ajouter des fonctions tactiles.
Cas d'usage
Ce concept intervient principalement dans la conception de logiciels complexes (POO - Programmation Orientée Objet). Il permet de structurer les fonctionnalités de manière logique, en partant du plus général vers le plus précis, sans pour autant écrire le code de réalisation (l'implémentation).
Bonnes pratiques
Évitez de créer des hiérarchies trop profondes (plus de 2 ou 3 niveaux) car cela complexifie inutilement la compréhension du code. Appliquez le principe de ségrégation des interfaces : préférez plusieurs sous-interfaces spécialisées à une seule interface massive qui obligerait les développeurs à coder des fonctions inutiles.
Synonymes
Antonymes
Conseil
Si vous débutez, utilisez les sous-interfaces pour « spécialiser » vos outils. Si vous avez une interface pour gérer des fichiers, créez une sous-interface pour les fichiers compressés : elle fera tout ce qu'un fichier normal fait, avec le dézippage en plus.
Questions fréquentes
Une sous-interface peut-elle hériter de plusieurs parents ?
Oui, dans de nombreux langages comme Java, une interface peut étendre plusieurs autres interfaces, contrairement aux classes.
Est-ce que la sous-interface contient du code ?
Généralement non. Comme toute interface, elle liste des méthodes (capacités) mais ne définit pas comment elles fonctionnent concrètement.