Bonjour,
Je ne savais pas trop quoi utiliser comme titre. Mais l'autre jour j'ai découvert quelque chose de vraiment bizarre à mon avis :
1 2 3 4 5 6 7 8 9 10 11 12
| public class A extends B implements IC
{}
public class B
{
public void toto() {}
}
public interface IC
{
void toto();
} |
Le code ci-dessus compile sans erreurs en Java et en C#. Je n'ai pas essayé d'autres langages. Mais je trouve aberrant que ça fonctionne !
La classe A implémente l'interface IC mais ne définis pas les méthodes nécessaires. Cependant sa compile car la méthode nécessaire se trouve dans la classe B
.
Quelqu'un peut-il m'expliquer à quoi sa sert de faire ça ? J'ai retrouvé cette façon de faire dans un projet d'Eclipse...
En procédant ainsi il me semble qu'on "casse" le principe de polymorphisme car dans le cas présenté ci-dessous la classe B est également de type IC mais la classe A ne l'est pas vraiment...
Partager