Dans les situations où deux interfaces s'appliquent à un objet, et qu'il existe deux méthodes surchargées qui ne diffèrent qu'en distinguant ces interfaces, quelle méthode est appelée?Polymorphisme ambigu?
Dans le code.
interface Foo {}
interface Bar {}
class Jaz implements Foo, Bar {}
void DoSomething(Foo theObject)
{
System.out.println("Foo");
}
void DoSomething(Bar theObject)
{
System.out.println("Bar");
}
Jaz j = new Jaz();
DoSomething(j);
Quelle méthode sera appelée? DoSomething (Foo) ou DoSomething (Bar)? Ni l'un ni l'autre n'est plus spécifique que l'autre, et je ne vois pas pourquoi on devrait être appelé à la place de l'autre, sauf que l'un est spécifié premier/dernier.
EDIT: Et avec ce type de code est-il possible de forcer l'une ou l'autre méthode?
les méthodes elles-mêmes sont * pas * ambiguos, vous avez raison. Cependant, l'appel de méthode 'DoSomething (j)' est, puisque j est à la fois un Foo et un Bar. –