class Base
{
public virtual void MethodA(int x)
{
Console.WriteLine ("In Base Class");
}
}
class Derived : Base
{
public override void MethodA(int x)
{
Console.WriteLine ("In derived INT)");
}
public void MethodA(object o)
{
Console.WriteLine ("In derived OBJECT");
}
}
class Test
{
static void Main()
{
Derived d = new Derived();
int k = 20;
d.MethodA(k);
}
}
La salida que obtuve para esto es "En derivado OBJETO". ¿Cuál es la razón de este extraño comportamiento? Después de algunas investigaciones, descubrí que el motivo es , las firmas declaradas en la clase base se ignoran. ¿Por qué son ignorados?¿Por qué se ignoran las firmas declaradas en la clase base?
+1 a la pregunta, estoy de acuerdo este es un comportamiento contrario a la intuición. –
Estoy de acuerdo en que el comportamiento es extraño. Me gustaría saber: ¿estás preguntando esto porque realmente quieres hacer esto o porque tienes curiosidad? No veo una razón para implementar algo como esto, pero definitivamente me gustaría saber por qué sucede. –
posible duplicado de [¿Cómo funciona el ocultamiento de métodos en C#? (Parte dos)] (http://stackoverflow.com/questions/710459/how-method-hiding-works-inc-c-part-two) –