c# method override in Unity3d
<p>In the latest weeks I played with Unity3d using c# as scripting language.
I never used before c# nor Unity3d, and I'm trying to understand how methods overriding works in Unity framework.
What wonders me is that I can extend the base class <code>MonoBehavior</code> and override methods such <code>Start ()</code>, <code>Update ()</code> and so on without to have to use the <code>override</code> keyword and the compiler does not complain about it!
Instead in a "normal" C# program I must use the <code>override</code> keyword or I get a compiler warning. For example:</p>

<pre><code>public class BaseClass {
    public virtual void MyMethod () {
        Console.WriteLine("BaseClass.MyMethod()");
    }
}

public class SubClass : BaseClass {
    public override void MyMethod () {
        Console.WriteLine("SubClass.MyMethod()");
    }
}

class Program {
    static void Main ()  {
        SubClass obj = new SubClass ();
        obj.MyMethod ();
    }
}
</code></pre>

<p>instead in Unity I can simply do:</p>

<pre><code>class PlayerController : MonoBehaviour {
    void Update () {
        // code...
    }
}
</code></pre>

<p>What happens behind the scenes? Does unity make use of "dynamic tricks" or what?</p>