package Polymorphie; public class FreieUebung { public static void main(String[] args) { class A {} class B extends A {} class C extends B {} class X { public void method(A a) { System.out.println(1); } public void method(B b) { System.out.println(2); } } class Y extends X { public void method(A a) { System.out.println(3); } public void method(B b) { System.out.println(4); } public void method(C c) { System.out.println(5); } } A a = new A(); B b = new B(); C c = new C(); X x = new X(); X y = new Y(); y.method(a); // Statement 1 -> Lösung: 3 ((X) y).method(a); // Statement 2 -> Lösung: 3 ((Y) y).method(a); // Statement 3 -> Lösung: 3 ((X) y).method(b); // Statement 4 -> Lösung: 4 ((Y) y).method(b); // Statement 5 -> Lösung: 4 ((X) y).method(c); // Statement 6 -> Lösung: 4 ((Y) y).method(c); // Statement 7 -> Lösung: 5 x.method(a); // Statement 8 -> Lösung: 1 ((X) x).method(a); // Statement 9 -> Lösung: 1 ((X) x).method(b); // Statement 11 -> Lösung: 2 ((X) x).method(c); // Statement 13 -> Lösung: 2 ((Y) x).method(a); // Statement 14 -> Lösung: ClassCastException x = y; x.method(a); // Statement 15 -> Lösung: 3 ((X) x).method(a); // Statement 16 -> Lösung: 3 ((Y) x).method(a); // Statement 17 -> Lösung: 3 ((X) x).method(b); // Statement 18 -> Lösung: 4 ((Y) x).method(b); // Statement 19 -> Lösung: 4 ((X) x).method(c); // Statement 20 -> Lösung: 4 ((Y) x).method(c); // Statement 21 -> Lösung: 5 } }