interface I { int m (); }
class A implements I
{ int m () { return 0; }}
class B implements I
{ int m () { return 1; }}
I x = // statischer Typ von x ist I
new A(); // dynamischer Typ ist hier A
System.out.println (x.m());
x = new B(); // dynamischer Typ ist jetzt B
System.out.println (x.m());