interface ou class abstrait ?
interface ou class abstrait ?
Une classe abstraite est là pour définir un comportement commun à toutes les classes qui l'étendront.
L'interface est là pour définir un "contrat", sans se préoccuper de la façon d'implémenter la fonctionnalité.
Il est bien dit que chaque être vivant à sa façon de gérer l'énergie, on n'a donc pas un comportement commun...
Il est dit aussi que tout être vivant consomme de l'énergie, donc, il répond bien à un "contrat" de ce point de vue...
Je ne pense pas trouver une explication aussi simple mais j'aimerais ajouter que dans ta classe abstraite tu peux implémenté un comportement par défaut de la méthode qui sera comportement si la classe fille ne la redéfinit pas. Cependant dans une interface tu n'as besoin que de la signature de la méthode(aucune implémentation n'est nécessaire puisque c'est un contrat) c'est à la classe qui implémente l'interface d’implémenter son comportement. Et si dans ta classe tu as besoin d’implémenter certaines méthodes et d'autres non sache que c'est une classe Abstraite(pense à une classe abstraite Animal et d'autres classes comme chien,chat,.. qui hériteront)
Note : la distinction est déjà devenue un peu plus floue avec le JDK8 qui a ajouté les méthodes par défaut dans les interfaces mais elle le sera encore plus avec le JDK9 qui va introduire les méthodes privées et les méthodes statique privées dans les interfaces (dans le but d’éviter de dupliquer du code dans les méthodes par défaut)
Voir : http://blog.joda.org/2016/09/private...in-java-9.html
public static - supported
public abstract - supported
public default - supported
private static - supported
private abstract - compile error
private default - compile error
private - supported
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
A quand l'héritage multiple ?![]()
C'est en gros la réflexion que je me faisais hier en écrivant cela.
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
Partager