public static void Main()
Console.WriteLine("Classe pai");
Console.WriteLine("-----");
Console.WriteLine("Classe filha");
Console.WriteLine("-----");
Console.WriteLine("Classe filha que chama função do pai");
new TestSonTwo().Hello();
Console.WriteLine("-----");
Console.WriteLine("Classe filha que não sobreescreve função do pai");
new TestSonThree().Hello();
Console.WriteLine("-----");
public virtual void Hello() {
Console.WriteLine("Oi pai");
public class TestSon : TestBase
public override void Hello() {
Console.WriteLine("oi filho");
public class TestSonTwo : TestBase
public override void Hello() {
Console.WriteLine("oi filho");
public class TestSonThree : TestBase