using System; public class Test { interface Interfejs { void metodaWirtualna(); } class Klasa1 : Interfejs { public void metodaWirtualna() { Console.WriteLine("Klasa1"); } } class Klasa2 : Interfejs { public virtual void metodaWirtualna() { Console.WriteLine("Klasa2"); } } class Klasa3 : Klasa2 { public override void metodaWirtualna() { Console.WriteLine("Klasa3"); } } static void Wypisz(Interfejs obiekt) { obiekt.metodaWirtualna(); // wirtualna czy nie wirtualna, oto jest pytanie! } public static void Main() { Wypisz(new Klasa1()); Wypisz(new Klasa2()); Wypisz(new Klasa3()); } }