Wikipedia sul problema di diamante:diamante Problema
" ... il problema diamante è un'ambiguità che si verifica quando due classi B e C ereditano da A, e la classe D eredita da entrambi B e C. Se un metodo in D chiama un metodo definito in A (e non sovrascrive il metodo), e B e C hanno sovrascritto quel metodo in modo diverso, quindi da quale classe eredita: B o C? "
Così il diamante si presenta così:
A
/\
B C
\/
D
La mia domanda è, cosa succede se non esiste una categoria come ad A, ma ancora una volta B e C dichiarano lo stesso metodo, dicono foo(). Non è lo stesso problema? Perché si chiama così il problema del diamante?
Esempio:
class B {
public void foo() {...}
}
class C {
public void foo() {...}
}
class D extends B, C {
}
new D().foo();
quale lingua stai chiedendo? –
@Neil Il linguaggio Butterworth non dovrebbe avere importanza in quanto questo è più un problema di concetto. Lingue come il C++ permettono questo, ma Java e C# no. –
Ed è per questo che "l'ereditarietà multipla" è una parolaccia ... – Danail