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());