title: what is "public new virtual void Method()" mean?
body: <p>when use new virtual key words to decorate the method? what is the affection? Like define an interface, and add a class to inherit the interface. but use the new virtual to realize the interface method.</p>
  
  <pre><code> interface IPrinter
  {
      void Print();
  }
  
   public class PrinterOne : IPrinter
  {
      public void Print() 
      {
          Console.WriteLine("PrinterOne.");
      }
  }
  
  public class PrinterTwo : PrinterOne
  {
      public new virtual void Print()
      {
          Console.WriteLine("PrinterTwo.");
      }
  }
  
  public class PrinterThree : PrinterTwo
  {
      public override void Print()
      {
          Console.WriteLine("PrinterThree.");
      }
  }
  
  public class PrinterFour : PrinterThree
  {
      public override void Print()
      {
          Console.WriteLine("PrinterFour.");
      }
  }
  
   static void Main(string[] args)
      {
          IPrinter iprinter = new PrinterFour();
          iprinter.Print();//the output is PrinterOne? why???
          Console.ReadLine();
      }
  </code></pre>