Bonsoir à tous,
j'ai lu les tutos mais j'arrive tjs pas à bien cerner la différence entre abstract et interfaces, lequel choisir??? lequel est le mieux....
Merci à vous![]()
Bonsoir à tous,
j'ai lu les tutos mais j'arrive tjs pas à bien cerner la différence entre abstract et interfaces, lequel choisir??? lequel est le mieux....
Merci à vous![]()
=> voir ici : http://www.developpez.net/forums/sho...95&postcount=3
Si tu as deja fait du C++, une interface est l'equivalent d'une classe virtuelle pure, et une classe abstraite d'une classe virtuelle.
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
donc si je comprend bien,
mon type définit par l'interface sera customisé par les classes qui vont l'implémenter?
exemple si j'ai
et que j'ai deux classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 interface véhicule{ public demarrer(); public arreter(); }
voitureMoteur et voitureAeau
ils vonts implémenter demarrer() et arreter() mais en définissant un comportement différent c'est ça?
et abstract alors? je pige pas, je m'enmêle un peu là.
lmerci de votre aide
oui les methodes peuvent etre totalement differentes et sans rapport entre elles.
Avec une classe abstraite, tu peux :
1) ne pas definir de comportement :
2) definir un comportement generique et modifiable (surchargeable) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part public abstract void arreter();
3) definir un comportement definitif :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public void arreter() { ... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public final void arreter() { ... }
N'oublie pas que tu peux aussi definir des methodes protected, package protected et private qui en plus des methodes publiques peuvent servir a definir un comportement plus commun a toutes les sous-classes.
Evidement la difference est peu flagrante sur une classe a deux methodes. Regarde du cote des actions (Action et AbstractAction) Swing. Tu peux soit :
- definir tes propres Action avec ta propre implementation completement differente de celle de AbstractAction.
- reutiliser AbstractAction telleq uelle dans une classe fille (apres tout y a pas des masses de methode abstract dans cette classe - mais c'est la un cas particulier)
- surcharger les methodes de AbstractAction pour reutiliser le comportement pre-existant mais ne le modifiant a ta sauce.
Sinon tu peux aussi voir du cote de ItemSelectable (utilisee a la fois par AsbractButton et JCheckBox par exemple) et de AbstractButton (et de ses differentes classes filles).
Le comportement commun entre tous les types de boutons est introduit par AbstractButton, tandis que ItemSelectable indique juste qu'on peut rajouter des listeners (mais ne specifie rien sur leur stockage (puisqu'il n'y a pas de code) donc chaque implementation doit faire a sa sauce).
Evidement on introduit aussi un type quand on utilise une classe abstraite, oui mais voila, il n'y a pas d'heritage multiple en Java. D'ou la necessite des interface, pour heriter de plusieurs types a la fois.
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
ok, nickel je comprend mieux.
j'ai une autre question mais je vais créer un autre topic
désolé de réouvrir ce topic mais je voulais pas en créér un autre vu que ça en rapport avec ma question.
Comment prouver que les champs d'une interface sont implicitement static et final?
Merci de votre aide
Partager