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/05/05 13:48] – [1.Aspekt: Zuweisung des Objekts einer Unterklasse] Martin Pabst | klassen2:casting:start [2021/04/10 22:17] – [Casting und der Operator instanceof] Martin Pabst | ||
---|---|---|---|
Zeile 6: | Zeile 6: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Zeile 33: | Zeile 33: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Hund h = new Hund(" | Hund h = new Hund(" | ||
Zeile 111: | Zeile 111: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Hund h = new Hund(" | Hund h = new Hund(" | ||
Zeile 182: | Zeile 182: | ||
</ | </ | ||
sind diese Anweisungen zulässig? Falls " | sind diese Anweisungen zulässig? Falls " | ||
- | + | [[.aufgabe12:loesungen:start|Lösungen]] | |
- | <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 208: | ||
< | < | ||
- | <div class=" | + | <div class=" |
<script type=" | <script type=" | ||
Hund h = new Hund(" | Hund h = new Hund(" | ||
Zeile 279: | Zeile 268: | ||
== 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