Violer est peut-être une notion un peu forte, foutre le bordel est plus exact.
Prends une classe A avec une methode m, tu la dérives en classe A1 et A2 dans lesquels tu surcharge m par respectivement m1 et m2.
Maintenant tu prends une clase B qui hérite à la fois de A1 et A2.
Tu commence à voir un peu le problème ...
Bon on y est, tu instancies B et tu fais appel à la méthode m.
C'est quelle version que tu vas executer?
Est-tu sûr que c'est celle que tu voulais?
En C++ cela dépend du compilo, si celui ci accepte l'héritage mutiple
En Java tu ne peux hériter que d'une classe et de plusieurs interface ce qui ne pose pas de problème vu que dans une interface toutes les méthodes sont abstraites.
En Eiffel, tu peux indiquer quelle version tu veux mais là on commence à dénaturer l'héritage.
Cela reste une différence de point de vue:
Pour le C++ c'est au programmeur à savoir programmer et tant pis pour lui s'il code comme un porc.
Pour Java, on considère que cela est source d'erreur donc on ne l'authorise pas
Pour Eiffel on laisse la possibilité mais avec des mécanismes de sécurité
Mais si tu veux vraiment du code élégant vaut mieux utiliser un langage fonctionnel :) (Qui a dit que cela sent le troll?)
[^] # Re: IBM demande à Sun de "libérer" Java
Posté par Nicolas Chapin . En réponse à la dépêche IBM demande à Sun de "libérer" Java. Évalué à 2.
Prends une classe A avec une methode m, tu la dérives en classe A1 et A2 dans lesquels tu surcharge m par respectivement m1 et m2.
Maintenant tu prends une clase B qui hérite à la fois de A1 et A2.
Tu commence à voir un peu le problème ...
Bon on y est, tu instancies B et tu fais appel à la méthode m.
C'est quelle version que tu vas executer?
Est-tu sûr que c'est celle que tu voulais?
En C++ cela dépend du compilo, si celui ci accepte l'héritage mutiple
En Java tu ne peux hériter que d'une classe et de plusieurs interface ce qui ne pose pas de problème vu que dans une interface toutes les méthodes sont abstraites.
En Eiffel, tu peux indiquer quelle version tu veux mais là on commence à dénaturer l'héritage.
Cela reste une différence de point de vue:
Pour le C++ c'est au programmeur à savoir programmer et tant pis pour lui s'il code comme un porc.
Pour Java, on considère que cela est source d'erreur donc on ne l'authorise pas
Pour Eiffel on laisse la possibilité mais avec des mécanismes de sécurité
Mais si tu veux vraiment du code élégant vaut mieux utiliser un langage fonctionnel :) (Qui a dit que cela sent le troll?)