Les relations entre les classes qui implémentent la même interface
Je suis à peu près java débutant, et je viens de demander à stackoverflow forum pour une question simple. J'ai déjà vérifié question similaire ici, mais je n'ai pas trouvé la réponse souhaitée, LIEN: Est-il une relation entre la classe qui implémente l'interface et l'interface?
Nous savoir si Chat s'étend Animal, il y a un lien ici. Si le Chat est un Animal ( mais pas nécessairement. L'Animal est également un Chien..). Nous savons que cette relation "est-un" - héritage.
Si nous disposons de deux classes: Fille et Bonbons et si la classe Fille tient instance de Bonbons, puis nous le nom de cette relation "est-un"-composition, parce que nous pouvons dire que les Filles a-un Bonbon.
Corrigez-moi si j'ai fait quelque chose de mal avec les exemples ci-dessus.
De toute façon ma question est de savoir si son il une relation entre des objets de classes qui implémentent la même interface? Disons:
public class A implements InterfaceA {}
public class B implements InterfaceA {}
Si il y a une certaine relation, la façon dont nous pouvons faire usage de cette relation? Merci pour vos réponses à l'avance..
EDIT: Pour ceux qui pensent qu'il n'y a pas une relation, j'ai un livre "java comment le programme de la neuvième édition de l'" et il est un diagramme UML qui montre les classes qui implémentent la même interface en "relation" ?
Image:
myObject instanceof InterfaceA
, où est myObject instance de A ou de BJe vous suggère de lire à propos de Composition au cours de l'héritage
Je suis étonné de voir à quel point la plupart des answerers ont mal compris cette question. Il semble très clair pour moi.
OriginalL'auteur rootpanthera | 2012-11-19
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de relation entre les objets qui implémentent la même interface. Les deux sont indépendants mise en œuvre de leurs propres. Ils suffit de suivre le protocole défini par l'interface.
Si vous essayez de lancer à partir d'un type d'objet à un autre type d'objet, vous allez finir par arriver
ClassCastException
.EDIT:
Votre diagramme UML suggèrent qu'il existe une relation entre l'interface et la classe (EST-UN), mais pas entre les deux classes qui implémentent la même interface. Il n'y a pas de ligne en relation avec le symbole entre les classes (comme vous voyez entre la classe et d'interface)
Heureux, il a aidé. Profitez de codage.
OriginalL'auteur kosa
Cela signifie que vos classes ont le même comportement décrit par les méthodes d'interface.
Par exemple, considérons deux classes:
Fish
etBird
. Ils ont tous deux peuvent implémenter l'interfaceMoveable
comme:Vous pouvez appeler le comportement spécifié par l'interface des méthodes comme:
Si l'un ou l'autre peut se déplacer, bien que la façon dont ils se déplacent diffère grandement. De cette façon, les deux classes ont en commun les comportements bien que sa mise en œuvre peuvent être inconnues pour vous.
OriginalL'auteur svz
La relation entre une classe de mise en œuvre et de l'interface, et l'interface est aussi un "est-un" de la relation, de même que l'extension d'une classe.
C'est utile (ou au moins une raison pour laquelle il est utile) parce qu'en fournissant une interface, vous pouvez code pour une interface plutôt que du code pour une implémentation de cette interface, le rendant facile (si vous en avez besoin) pour échanger vos implémentations plus de avec le minimum de tracas.
Noter que si vous allez "à travers" la hiérarchie d'héritage, de sorte que la relation entre les deux classes qui héritent de la même interface, il n'y a pas de relation implicite ici.
OriginalL'auteur Michael Berry
Il n'y a pas de nom officiel pour la relation entre les deux classes qui implémentent la même interface.
Ou, d'ailleurs, qui s'étendent de la même classe de base. Si un enfant qui s'étend de l'autre est son enfant, deux enfants de la même classe sont frères et sœurs, mais ce n'est pas un terme qui est généralement utilisé.
Si vous vouliez étendre cette métaphore anthropomorphique aux interfaces, vous pouvez appeler les deux implémentations de l'interface de sosies, peut-être.
OriginalL'auteur Tom Anderson