Wikipédia sur le problème du diamant:diamant Problème
» ... le problème de diamant est une ambiguïté qui se pose lorsque deux classes B et C de A hériteront, et la classe D hérite à la fois B et C. Si une méthode dans D appelle une méthode définie dans A (et ne remplace pas la méthode), et B et C ont surchargé cette méthode différemment, puis de quelle classe hérite-t-il: B ou C? "
Ainsi, le diamant ressemble à ceci:
A
/\
B C
\/
D
Ma question est, ce qui se passe s'il n'y a pas de classe A, mais encore une fois B et C déclarent la même méthode, dire foo(). N'est-ce pas le même problème? Pourquoi est-ce alors appelé problème de diamant?
Exemple:
class B {
public void foo() {...}
}
class C {
public void foo() {...}
}
class D extends B, C {
}
new D().foo();
quelle langue demandez-vous? –
@Neil Le langage Butterworth ne devrait pas avoir d'importance dans ce domaine car il s'agit davantage d'un problème de concept. Des langages comme C++ le permettent mais pas Java et C#. –
Et c'est pourquoi "l'héritage multiple" est un mot sale ... – Danail