Le 02 décembre 2017 à 11:44:39 Depressioniste a écrit :
J'ai une question: à quoi servent les interfaces?
Je ne vois pas à quoi elles servent.
Par exemple ici: http://www.exelib.net/java-avance/gestion-des-clients-avec-jdbc-statement.html
Je fais cet exercice mais pourquoi ne pas créer la classe sans faire d'implémentation?
L'interface est un contrat. Ca permet de spécifier les méthodes (publiques) que doivent posséder toute implémentation de ce contrat. Une classe qui implémente cette interface par nature va suivre ce contrat et possède une implémentation de toutes les méthodes qui ont été définies.
L'utilité sous-jacente est de découpler l'implémentation du reste du programme. Ca permet entre autre de pouvoir changer d'implémentation (tout en étant toujours compatible avec le contrat établi) sans pour autant impacter le reste du programme.
Cela correspond au principe blackbox. D'un point de vue extérieur, ce qu'il se passe réellement est inconnu (boite noire) mais on sait qu'il y a tel bouton qui permet de faire ça.
Un exemple concret est les List. Il existe beaucoup d'implémentations différentes standards (ArrayList, LinkedList, Vector... mais aussi dans d'autres librairies comme Guava) et chacune a ses avantages et inconvénients. Si je choisis de retourner une List, je vais toujours typer avec l'interface pour que si je change d'implémentation cela n'impacte que la classe correspondante.
Message édité le 02 décembre 2017 à 13:53:49 par KheyALaine