title: c#: flow of control when calling an inherited base method, which inturn calls a base virtual method which is set as new in derived class
body: <p>disclaimer: i am totally newbie to this world of coding!
  in my course on learning c#, i read this article.
  <a href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/knowing-when-to-use-override-and-new-keywords" rel="nofollow noreferrer">https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/knowing-when-to-use-override-and-new-keywords</a>.</p>
  
  <p>code:</p>
  
  <pre><code>public class Car
  {
      public void DescribeCar()
      {
          Console.WriteLine("Car: Four wheels and an engine.");
          ShowDetails();
      }
  
      public virtual void ShowDetails()
      {
          Console.WriteLine("Car: Standard transportation.");
      }
  }
  
  public class ConvertibleCar : Car
  {
      public new void ShowDetails()
      {
          Console.WriteLine("ConvertibleCar: A roof that opens up.");
      }
  }
  
  ConvertibleCar myCC = new ConvertibleCar();
  myCC.DescribeCar();
  myCC.ShowDetails();
  
  //Output
  Car: Four wheels and an engine.
  Car: Standard transportation.
  ConvertibleCar: A roof that opens
  </code></pre>
  
  <p>Question: i expect with my understanding i should get "ConvertibleCar: A roof than opens" in my second and third line of output.
  what is it different when calling ShowDetails directly on the derived class, and from within a method in the base class.
  PS: the  showdetials is set at new in the derived class.</p>