using System;
class Foo {
public virtual void voo () {
Console.WriteLine("Foo::voo");
}
public void noo () {
Console.WriteLine("Foo::noo");
}
}
class Boo : Foo {
public override void voo () {
Console.WriteLine("Boo::voo");
}
public void noo () {
Console.WriteLine("Boo::noo");
}
}
public class Test
{
public static void Main()
{
Foo ffoo = new Foo(), fboo = new Boo();
Boo bboo = new Boo();
ffoo.voo(); // Foo as Foo: Foo::voo
ffoo.noo(); // Foo as Foo: Foo::noo
fboo.voo(); // Boo as Foo: Boo::voo
fboo.noo(); // Boo as Foo: Foo::noo
bboo.voo(); // Boo as Boo: Foo::voo
bboo.noo(); // Boo as Boo: Foo::noo
}
}
dXNpbmcgU3lzdGVtOwoKY2xhc3MgRm9vIHsKCXB1YmxpYyB2aXJ0dWFsIHZvaWQgdm9vICgpIHsKCQlDb25zb2xlLldyaXRlTGluZSgiRm9vOjp2b28iKTsKCX0KCQoJcHVibGljIHZvaWQgbm9vICgpIHsKCQlDb25zb2xlLldyaXRlTGluZSgiRm9vOjpub28iKTsKCX0KfQoKY2xhc3MgQm9vIDogRm9vIHsKCXB1YmxpYyBvdmVycmlkZSB2b2lkIHZvbyAoKSB7CgkJQ29uc29sZS5Xcml0ZUxpbmUoIkJvbzo6dm9vIik7Cgl9CgkKCXB1YmxpYyB2b2lkIG5vbyAoKSB7CgkJQ29uc29sZS5Xcml0ZUxpbmUoIkJvbzo6bm9vIik7Cgl9Cn0KCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlGb28gZmZvbyA9IG5ldyBGb28oKSwgZmJvbyA9IG5ldyBCb28oKTsKCQlCb28gYmJvbyA9IG5ldyBCb28oKTsKCQkKCQlmZm9vLnZvbygpOyAvLyBGb28gYXMgRm9vOiBGb286OnZvbwoJCWZmb28ubm9vKCk7IC8vIEZvbyBhcyBGb286IEZvbzo6bm9vCgkJZmJvby52b28oKTsgLy8gQm9vIGFzIEZvbzogQm9vOjp2b28KCQlmYm9vLm5vbygpOyAvLyBCb28gYXMgRm9vOiBGb286Om5vbwoJCWJib28udm9vKCk7IC8vIEJvbyBhcyBCb286IEZvbzo6dm9vCgkJYmJvby5ub28oKTsgLy8gQm9vIGFzIEJvbzogRm9vOjpub28KCX0KfQ==