//Classic sample of Polymorphism 4 Knowing When to Use Override and New Keywords public static void ScenarioEight() { Teacher baseTeacher = new Teacher(); baseTeacher.ShowMeDance(); System.Console.WriteLine("----------"); NewStyleTeacher newStyleTeacher = new NewStyleTeacher(); newStyleTeacher.ShowMeDance(); //go to the new newStyleTeacher.Dance(); ///go to the new System.Console.WriteLine("----------"); BachataTeacher bachataTeacher = new BachataTeacher(); bachataTeacher.ShowMeDance(); //go to base System.Console.WriteLine("----------"); StupidTeacher stupidTeacher = new StupidTeacher(); stupidTeacher.ShowMeDance(); //go to the old // Keep the console open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); }
//Classic override with "new" witout override public static void ScenarioFive() { NewStyleTeacher teacher = new NewStyleTeacher(); teacher.Dance(); // Show Child teacher.ShowMeDance(); // Show Father Console.WriteLine("------------------"); Teacher newTeacher = (Teacher)teacher; newTeacher.Dance(); newTeacher.ShowMeDance(); // Show father -public virtual void Dance() Console.WriteLine("------------------"); ((Teacher)teacher).Dance(); // Keep the console open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); }