Bonjour,
j'ai un petit soucis, je sais que le sujet des classes abstraites et des interfaces revient régulièrement, j'ai lu beaucoup de choses, mais j'ai pas vraiment trouvé de réponses ou alors je n'ai pas eu le déclic qui m'a fait comprendre.
En fait je pense avoir compris l'utilité d'une classe abstraite, et je trouve que ça à l'air plutôt utile (je n'ai pas encore eu l'occasion de l'utiliser) avec la possibilité de définir des méthodes communes et d'autres à redéfinir suivant les cas et j'ai même l'impression que ça peut être utiliser dans la majorité des cas (sauf s'il y a déjà une un héritage).
Par contre, l'interface, ok, c'est utilisable dans le cas ou il y à déjà un héritage. Mais toutes les méthodes déclarées doivent être redéfinies, arrêtez moi si je me trompe. Donc en fait mes 2 questions, sont :
S' il faut tout redéfinir, puisqu'il n'y a que des méthodes abstraites dans l'interface, autant ne pas faire d'interface et redéfinir directement dans les classes , ça revient au même (à part le fait que l'interface lorsqu'elle est implémentée oblige à redéfinir la méthode donc il n'est pas possible de "l'oublier" mais ça fait léger comme avantage je trouve) ?
Ensuite, je n'arrive pas à voir dans quel cas l'utiliser, je veux dire, quel cheminement dans l'esprit amène à dire : ah là, c'est obligé je dois faire une interface (une fois de plus, a part le fait qu'il n'y ai pas d’héritages multiples) puisqu'il faut tout redéfinir (contrairement à une classe abstraite qui peut avoir des méthodes non abstraites communes à toutes les classes filles) ? En fait j'ai surtout l'impression que l'interface ne sert pas à grand chose, même dans les nombreux exemples lus, je me dis : sans interface c'est pareil. WTF ?
Je sais que les questions sur les interfaces reviennent souvent, et je m'excuse par avance de vous saouler avec ça, et pourtant j'ai pas mal fouiller (ici, stackoverflow, etc...) mais je pense surtout que je n'ai pas eu le "déclic" qui m'a permis de comprendre.
Merci à vous.
Partager