"Grundkurs Programmieren in Java - (8. Auflage, 2018)"
2001-2018, Carl Hanser Verlag
Lösungsvorschlag zu Aufgabe 8.4 (Version 3.0)
(c) 2001-2018 D. Ratz, D. Schulmeister-Zimolong, D. Seese, J. Wiesenberger
Beim Compilieren erhät man zwei Fehlermeldungen:
E:\hiwi\temp>javac InstanceOfTest.java
InstanceOfTest.java:28: inconvertible types
found : Vater
required: Waehrung
System.out.println( vaeterchen instanceof Waehrung );
^
InstanceOfTest.java:32: inconvertible types
found : Sohn
required: Waehrung
System.out.println( soehnchen instanceof Waehrung );
^
2 errors
Das Objekt vaeterchen ist vom Typ Vater und kann deshalb kein
Objekt vom Typ Waehrung sein (vgl. auch Abbildung 9.3 im Buch: Vater erbt weder direkt
noch indirekt von Waehrung), weshalb der
Compiler meckert. Ebenso verhält es sich mit soehnchen.
Kommentiert man diese beiden Zeilen aus, kann man das Programm übersetzen und
erhält bei der Ausführung folgende Ausgabe:
E:\hiwi\temp>java InstanceOfTest
false
true
true
true
true
true
Würde man aber die Variablen vaeterchen und soehnchen vom
Typ Object deklarieren (problemlos möglich, da die Klasse Vater
sowie die Klasse Sohn von Object erben), so können wir das Programm
übersetzen:
Object vaeterchen = new Vater();
Object soehnchen = new Sohn();
und würden folgende Ausgabe erhalten:
E:\hiwi\temp>java InstanceOfTest
false
true
false
true
true
true
false
true
Quelltext: InstanceOfTest.java