|
Bas de page | |
---|---|
Auteur | Sujet : Polymorphisme et intérêt des interfaces |
Publicité | Posté le 11-12-2016 à 14:02:11 |
DDT Few understand | Tu peux hériter de classes concrètes, pas de soucis, mais ici du coup tu pourrais aussi instancier des objets de type Agent ou Ghost, ce que tu ne veux pas normalement. Tu peux parfaitement instancier une classe non-abstraite et l'assigner à une variable d'un type parent (abstrait ou non):
Si tu veux un bon exemple, dans ton IDE ou dans la Javadoc jette un œil à java.util.List, AbstractList et ArrayList. Message édité par DDT le 12-12-2016 à 01:08:23 --------------- click clack clunka thunk |
gelatine_velue | Non, cette déclaration est valide. Une interface est un ensemble de comportements que doit avoir une classe, et c'est pourquoi une classe peut avoir plusieurs interfaces. On peut attendre d'elle plusieurs comportements. Pour pacman ce pourrait être d'être un agent (interface Agent) ET d'etre controlable par l'utilisateur (nouvelle interface UserMoveable par ex.) Une classe abstraite sert à factoriser du code présent dans plusieurs classes similaires. En java on ne peut hériter que d'une classe. Une classe abstraite ne sert donc pas à définir un contrat d'interface mais plus à grouper du code entre plusieurs classes proches ou identiques, comme tes Ghosts. Note que l'un n'empêche pas l'autre. Il serait logique que Ghost hérite de AbstractGhost pour factoriser le code commun, et que AbstractGhost implémente l'interface IGhost, qui définit les méthodes que le reste du programme peut s'attendre de voir un Ghost implémenter: le contrat d'interface. Message édité par gelatine_velue le 12-12-2016 à 15:40:22 |
DDT Few understand | Si tu préfixes le nom de tes interfaces avec I en Java je te mets un coup de pelle lors des revues de code. --------------- click clack clunka thunk |
gelatine_velue |
C'est pour etre le moins ambigu possible dans mon explication, j'etais SUR que qqun allait faire la remarque. Message cité 1 fois Message édité par gelatine_velue le 12-12-2016 à 19:55:31 |
bu47u96u99 |
|
antiseptiqueincolore | hmmm sur mon ancien projet, on doit trouver plusieurs centaines (milliers?) d'interfaces qui commencent par I.
Message cité 1 fois Message édité par antiseptiqueincolore le 13-12-2016 à 06:20:17 |
DDT Few understand | Le C# c'est à côté.
--------------- click clack clunka thunk |
antiseptiqueincolore | sujet très sensible un peu comme les réglages de sonarqube sur ce qui est acceptable ou pas.
|
Harkonnen ModérateurUn modo pour les bannir tous |
--------------- J'ai un string dans l'array (Paris Hilton) |
Publicité | Posté le 17-12-2016 à 14:15:26 |
antiseptiqueincolore |
|
Harkonnen ModérateurUn modo pour les bannir tous | Si tu regardes bien, la seule différence entre une interface et une classe abstraite est le fait qu'une interface ne peut pas avoir de membres private. Tous ses membres sont publics. C'est une différence très minime, il n'y a donc aucune raison de distinguer un type abstrait d'un type interface, ça ne fait que rajouter de la confusion visuelle.
--------------- J'ai un string dans l'array (Paris Hilton) |
Sujets relatifs | |
---|---|
Polymorphisme et static_cast | interet de l'ecriture hexadecimale |
Javascript - de l'intérêt de la compression | [JEE] Passer d'interfaces distantes à locales |
Intêret de nusoap | question d'héritage et polymorphisme |
Difficulté à comprendre les CMS | intéret du typage |
Clustering et load balancing : c'est quoi l'intérêt ? | Lister les interfaces réseau physiques |
Plus de sujets relatifs à : Polymorphisme et intérêt des interfaces |