using System;
namespace Erb {
class A {
// kein dynamischer Dispatch
public void Q () {
Console.WriteLine ("A.Q");
}
// dynamischer Dispatch
public virtual void T () {
Console.WriteLine ("A.T");
}
// dynamischer Dispatch
public virtual void S () {
Console.WriteLine ("A.S");
}
}
class B : A {
// hiding ( verstecken)
public new void Q () {
Console.WriteLine ("B.Q");
}
// überschreiben
public override void T () {
Console.WriteLine ("B.T");
}
public new virtual void S () {
Console.WriteLine ("B.S");
}
}
class C : B {
public override void S () {
Console.WriteLine ("C.S");
}
}
class Top {
public static void Main (string [] args) {
B z = new C (); z.S();
}
}
}