2010-02-28 10 views
0

Si j'ai trois classesUtilisation des classes abstraites et interfaces

class A 

class B extends A 

class C extends A 

en utilisant des classes abstraites Would ou interfaces me donnent tout type d'erreurs ou affectent la façon dont je mets en œuvre le programme?

+8

Cela dépend. Qu'essayez-vous de faire? – SLaks

+8

La façon dont vous posez cette question est si vague que je la considérerais presque comme n'étant pas une vraie question. Lisez des sous-classes, des interfaces et des classes abstraites, et essayez de demander quelque chose de plus spécifique. – MatrixFrog

Répondre

4

Sauf si vous devez partager l'implémentation, privilégiez les interfaces.

Si vous devez partager l'implémentation, réfléchissez bien si une classe abstraite est la bonne façon d'y parvenir. L'héritage est un outil puissant, mais peut facilement créer un désordre non maintenable (j'ai été coupable ici). Mais pour répondre à votre question - non, il n'y a rien d'inhérent à cette configuration qui causerait une "erreur".

1

Vous devriez généralement préférer les interfaces quand vous le pouvez. Le manque d'héritage multiple de Java devient rapidement un facteur limitant si vous utilisez des classes pour cela.

+0

Java permet l'héritage multiple pour les interfaces et si vous utilisez AspectJ vous pouvez ajouter des implémentations de méthodes directement aux interfaces. Mettez les deux ensemble et vous obtenez: Héritage d'implémentation multiple. – whiskeysierra

1

Oui. Les classes abstraites échangent une méthode plus courte de réutilisation pour la flexibilité de fournir plusieurs interfaces au même objet. Sauf si vous jouez au golf de code, choisir la flexibilité des interfaces est généralement la meilleure option.