class A {} class B: A{} class Client{ public static void Main (){ // Static type Dynamic type A x; // A - B y; // B - x = new A(); // A A TRIVIAL y = new B(); // B B TRIVIAL x = y; // A B OK - TYPICAL y = (B)new A(); // B A RUNTIME ERROR y = (B)x; // B B NOW OK } }