what is "public new virtual void Method()" mean?
c#
Solution
`new` and `virtual` are two (mostly-) unrelated keywords.
`new` means it shadows the base method. `virtual` allows subclasses to override it.
Calling the method through the interface results in the base method being called, since the base method is not `virtual` and the derived classes don't explicitly re-implement the interface (which would cause the method to be re-mapped)
Problem
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. ``` 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(); } ```