de Wikipedia sobre el problema de diamantes:diamante
" ... el problema de diamantes es una ambigüedad que surge cuando dos clases B y C heredan de A y de clase D hereda de B y C. Si un método en D llama a un método definido en A (y no anula el método), y B y C han anulado ese método de manera diferente, y luego de qué clase hereda: B o C? "
Así que el diamante tiene el siguiente aspecto:
A
/\
B C
\/
D
Mi pregunta es, ¿qué ocurre si no hay tal clase A, pero de nuevo B y C declaran el mismo método, dicen foo(). ¿No es este el mismo problema? ¿Por qué se llama entonces problema de diamantes?
Ejemplo:
class B {
public void foo() {...}
}
class C {
public void foo() {...}
}
class D extends B, C {
}
new D().foo();
¿sobre qué idioma estás preguntando? –
@Neil El lenguaje de Butterworth no debería importar, ya que se trata más de un problema conceptual. Los lenguajes como C++ lo permiten, pero Java y C# no. –
Y esta es la razón por la cual "herencia múltiple" es una palabra sucia ... – Danail