klassen2:casting:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
klassen2:casting:start [2020/04/27 17:22] – [2. Aspekt: Casten] Martin Pabst | klassen2:casting:start [2021/05/09 00:24] – [2. Aspekt: Casten] Martin Pabst | ||
---|---|---|---|
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=" | ||
Tier t = new Tier(" | Tier t = new Tier(" | ||
t.schreibeName(); | t.schreibeName(); | ||
- | |||
class Tier { | class Tier { | ||
Zeile 34: | Zeile 37: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Hund h = new Hund(" | Hund h = new Hund(" | ||
Zeile 54: | Zeile 57: | ||
<script type=" | <script type=" | ||
- | Tier t = new Tier(" | ||
- | t.schreibeName(); | ||
- | |||
class Tier { | class Tier { | ||
Zeile 103: | Zeile 103: | ||
==== 1.Aspekt: Zuweisung des Objekts einer Unterklasse==== | ==== 1.Aspekt: Zuweisung des Objekts einer Unterklasse==== | ||
Einer Variable vom Datentyp Tier (Oberklasse) kann man nicht nur Objekte vom Datentyp Tier zuweisen, sondern auch Objekte beliebiger Unterklassen der Klasse Tier. Im Beipsiel unten: | Einer Variable vom Datentyp Tier (Oberklasse) kann man nicht nur Objekte vom Datentyp Tier zuweisen, sondern auch Objekte beliebiger Unterklassen der Klasse Tier. Im Beipsiel unten: | ||
- | < | + | < |
Hund h = new Hund(" | Hund h = new Hund(" | ||
Tier t = h; | Tier t = h; | ||
Zeile 115: | Zeile 115: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Hund h = new Hund(" | Hund h = new Hund(" | ||
Zeile 181: | Zeile 181: | ||
- Entferne das Kommentarzeichen %%//%% am Beginn der Zeile 6 bzw. 10. Welche Fehlermeldung zeigt der Compiler an? Warum tut er das? | - Entferne das Kommentarzeichen %%//%% am Beginn der Zeile 6 bzw. 10. Welche Fehlermeldung zeigt der Compiler an? Warum tut er das? | ||
- Nach Zeile 10 wird folgendes Programm ergänzt: | - Nach Zeile 10 wird folgendes Programm ergänzt: | ||
- | < | + | < |
Katze k1 = h; | Katze k1 = h; | ||
| | ||
</ | </ | ||
- | sind diese Anweisungen zulässig? Falls " | + | sind diese Anweisungen zulässig? Falls " |
+ | [[.aufgabe12: | ||
==== 2. Aspekt: Casten ==== | ==== 2. Aspekt: Casten ==== | ||
Wurmt es Dich nicht auch, dass im Falle von | Wurmt es Dich nicht auch, dass im Falle von | ||
- | < | + | < |
Hund h = new Hund(" | Hund h = new Hund(" | ||
Tier t = h; | Tier t = h; | ||
Zeile 196: | Zeile 196: | ||
die Anweisung in Zeile 3 nicht möglich ist, obwohl wir sicher wissen, dass '' | die Anweisung in Zeile 3 nicht möglich ist, obwohl wir sicher wissen, dass '' | ||
Denke Dir folgende Variante: | Denke Dir folgende Variante: | ||
- | < | + | < |
Hund h = new Hund(" | Hund h = new Hund(" | ||
Katze k = new Katze(" | Katze k = new Katze(" | ||
Zeile 212: | Zeile 212: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Hund h = new Hund(" | Hund h = new Hund(" | ||
Zeile 272: | Zeile 272: | ||
== Aufgaben == | == Aufgaben == | ||
- | - Nimm in Zeile 8 das Casting weg, schreibe also '' | + | 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