klassen2:casting:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
klassen2:casting:start [2020/05/05 13:48] – [1.Aspekt: Zuweisung des Objekts einer Unterklasse] Martin Pabst | klassen2:casting:start [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Casting und der Operator instanceof ====== | + | ====== |
+ | |||
+ | {{ youtube> | ||
+ | |||
+ | | ||
Da Variablen vom Datentyp einer Oberklasse auch auf Objekte der Unterklasse zeigen können, ergeben sich Situationen, | Da Variablen vom Datentyp einer Oberklasse auch auf Objekte der Unterklasse zeigen können, ergeben sich Situationen, | ||
Zeile 6: | Zeile 10: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Zeile 33: | Zeile 37: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Hund h = new Hund(" | Hund h = new Hund(" | ||
Zeile 111: | Zeile 115: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Hund h = new Hund(" | Hund h = new Hund(" | ||
Zeile 181: | Zeile 185: | ||
| | ||
</ | </ | ||
- | sind diese Anweisungen zulässig? Falls " | + | sind diese Anweisungen zulässig? Falls " |
- | + | [[.aufgabe12: | |
- | <hidden Lösungen> | + | |
- | == Aufgabe 1: == | + | |
- | Der Compiler zeigt folgenden Fehler an: \\ | + | |
- | "Der Typ besitzt keine Methode mit dem Bezeichner belle." | + | |
- | Das tut er, weil t eine Variable vom Typ Tier ist und die Klasse Tier keine Methode belle besitzt. Dass das Objekt, auf das t zeigt, ein Hund-Objekt ist (und sehr wohl eine Methode belle besitzt), weiß der Compiler nicht. | + | |
- | + | ||
- | == Aufgabe 2: == | + | |
- | Katze k1 = h; | + | |
- | ist nicht zulässig, da h eine Variable der Klasse Tier ist. Dass h gerade auf ein Objekt der Klasse Katze zeigt, weiß der Compiler nicht. | + | |
- | h.schreibeName(); | + | |
- | </ | + | |
==== 2. Aspekt: Casten ==== | ==== 2. Aspekt: Casten ==== | ||
Wurmt es Dich nicht auch, dass im Falle von | Wurmt es Dich nicht auch, dass im Falle von | ||
Zeile 219: | Zeile 212: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Hund h = new Hund(" | Hund h = new Hund(" | ||
Zeile 279: | Zeile 272: | ||
== Aufgaben == | == Aufgaben == | ||
- | | + | 3. Nimm in Zeile 8 das Casting weg, schreibe also '' |
- | | + | 4. Wenn wir ungerechtfertigt casten, vertraut uns der Compiler dann? Probiere es aus, indem Du die Zeile 5 ersetzt durch '' |
- | | + | 5. Verändert das Casten durch den Term '' |
+ | \\ | ||
+ | [[.aufgabe345: | ||
==== 3. Aspekt: instanceof ==== | ==== 3. Aspekt: instanceof ==== | ||
Oft kann eine Variable an einer Stelle des Programms zu verschiedenen Zeiten verschiedene Objekte enthalten, so dass wir im Programm flexibel darauf reagieren müssen. Für diesen Zweck gibt es den Operator '' | Oft kann eine Variable an einer Stelle des Programms zu verschiedenen Zeiten verschiedene Objekte enthalten, so dass wir im Programm flexibel darauf reagieren müssen. Für diesen Zweck gibt es den Operator '' | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Hund h = new Hund(" | Hund h = new Hund(" |
klassen2/casting/start.txt · Zuletzt geändert: 2021/12/29 11:29 von 127.0.0.1