package Polymorphie; public class WS1516 { public static void main(String[] args) { class A { } class B extends A { } class C extends B { } class Print1 { public void print(A a) { System.out.println(x); } public void print(B b) { System.out.println(x+1); } private int x = 1; } class Print2 extends Print1 { private int x = 3; public void print(A a) { System.out.println(x); } public void print(B b) { System.out.println(x+1); } public void print(C c) { System.out.println(x+2); } //public void print() {}; } A a = new A(); B b = new B(); C c = new C(); Print1 p1 = new Print1(); Print2 p2 = new Print2(); p1 = p2; p1.print(c); // Aufruf 1 -> Lösung: 4 ((Print2) p1).print(c); // Aufruf 2 -> Lösung: 5 ((Print1) p2).print(b); // Aufruf 3 -> Lösung: 4 ((Print1) p2).print(c); // Aufruf 4 -> Lösung: 4 p2.print(c); // Aufruf 5 -> Lösung: 5 p1 = new Print1(); ((Print2) p1).print(a); // Aufruf 6 -> Lösung: ClassCastException //((Print1) p2).print(); } }