Inheritance, ¿Que salida da el siguiente código? ¿What is the result of executing the following code?
using System;
namespace BasicTest
{
public class A
{
public virtual void DoSomething()
{
Console.WriteLine("A doSomething");
}
}
public class B:A
{
public void DoSomething()
{
Console.WriteLine("B doSomething");
}
}
public class C : A
{
public override void DoSomething()
{
Console.WriteLine("C doSomething");
}
}
public class D : C
{
public new void DoSomething()
{
Console.WriteLine("D doSomething");
}
}
public class EntryPoint
{
static void Main()
{
A testB = new B();
A testC = new C();
A testD = new D();
testB.DoSomething();
testC.DoSomething();
testD.DoSomething();
Console.ReadLine();
}
}
}
A doSomething
C doSomething
C doSomething
Si el método es virtual ejecutaremos el método mas profundo que lleguemos en la cadena de herencia, con una excepción, si encontramos la cadena “new” nos paramos antes. Mas información sobre herencia en el siguiente enlace Herencia c#.