using System;
public class Test
{
interface Interfejs {
void metodaWirtualna();
}
class Klasa1 : Interfejs {
public virtual void metodaWirtualna() {
Console.WriteLine("Klasa1");
}
}
class Klasa2 : Klasa1 {
public override void metodaWirtualna() {
Console.WriteLine("Klasa2");
}
}
static void Wypisz(Interfejs obiekt) {
obiekt.metodaWirtualna();
}
public static void Main()
{
Wypisz(new Klasa1());
Wypisz(new Klasa2());
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJaW50ZXJmYWNlIEludGVyZmVqcyB7CgkJdm9pZCBtZXRvZGFXaXJ0dWFsbmEoKTsKCX0KCQoJY2xhc3MgS2xhc2ExIDogSW50ZXJmZWpzIHsKCQlwdWJsaWMgdmlydHVhbCB2b2lkIG1ldG9kYVdpcnR1YWxuYSgpIHsKCQkJQ29uc29sZS5Xcml0ZUxpbmUoIktsYXNhMSIpOwoJCX0KCX0KCQoJY2xhc3MgS2xhc2EyIDogS2xhc2ExIHsKCQlwdWJsaWMgb3ZlcnJpZGUgdm9pZCBtZXRvZGFXaXJ0dWFsbmEoKSB7CgkJCUNvbnNvbGUuV3JpdGVMaW5lKCJLbGFzYTIiKTsKCQl9Cgl9CgkKCXN0YXRpYyB2b2lkIFd5cGlzeihJbnRlcmZlanMgb2JpZWt0KSB7CgkJb2JpZWt0Lm1ldG9kYVdpcnR1YWxuYSgpOwoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJV3lwaXN6KG5ldyBLbGFzYTEoKSk7CgkJV3lwaXN6KG5ldyBLbGFzYTIoKSk7Cgl9Cn0=