Probablemente haya llamado al método con una variable del tipo Parent
.
Como las sobrecargas de métodos se resuelven en tiempo de compilación, el compilador solo puede seleccionar una sobrecarga basándose en los tipos de tiempo de compilación estáticos de los parámetros.
Por lo tanto, aunque su variable podría contener realmente una instancia SubOfParent
en tiempo de ejecución, el compilador no lo sabe y, por lo tanto, elegirá la primera sobrecarga.
Los métodos virtuales, por el contrario, se resuelven en el tiempo de ejecución en función del tipo real de la instancia en cuestión.
Por lo tanto, si SubOfParent
anulara un método virtual, llamar a ese método en una variable de tipo Parent
llamaría correctamente al método reemplazado si la instancia es de hecho del tipo SubOfParent
.
http://stackoverflow.com/questions/479923/is-ca-single-dispatch-or-multiple-dispatch-language –
Por favor, publique el código, de este contexto nadie tiene idea – Yakeen
@Yakeen, aquí hay suficiente código para saber qué está mal. – tster