package Polymorphie; class K { public static void p(Object o) { System.out.println(o.toString()); } public void m1(K k) { p("K.m1(K)"); } public void m1() { m1(new L()); } public void m2() { m2(this); } private static void m2(K k) { p("K.m2(K)"); } } class L extends K { public void m1(L l) { p("L.m1(L)"); } public void m2(K k) { p("L.m2(K)"); } public void m3() { super.m1(this); } } class M extends K { public void m1(M m) { p("M.m(M)"); } } public class SS11 { public static void main (String[] args) { // Welche Anweisungen werden vom Compiler ohne Fehler übersetzt? // Richtige Antwort: 2 Punkte, falsche -2, keine 0. //K k = new L(); k.m1(new L()); //K k = new K(); L.m2(k); //K k = new K(); L l = new L(); ((K)l).m2(k); //class N extends L { public static void m1(L l){} }; //K k = new K(); ((L)k).p(k); //M mk = new M(); // Bonus: //M mk = new M(); mk.m1(new M()); //M mk = new M(); mk.m1(new M()); //M ml = new M(); ml.m1(new M()); } }