Benutzer-Werkzeuge

Webseiten-Werkzeuge


klassen2:casting:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
klassen2:casting:start [2020/05/05 07:35] – [1.Aspekt: Zuweisung des Objekts einer Unterklasse] Martin Pabstklassen2:casting:start [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-====== Casting und der Operator instanceof ======+====== Type Casting und der Operator instanceof ====== 
 + 
 +{{ youtube>iUYAXaDJpAA?large }} 
 + 
 + \\ 
 Da Variablen vom Datentyp einer Oberklasse auch auf Objekte der Unterklasse zeigen können, ergeben sich Situationen, in denen erst zur Laufzeit bekannt ist, welchen Datentyp das Objekt hat, auf das eine bestimmte Variable zeigt. Wie man damit umgeht, zeige ich konkret an einem Beispiel: Da Variablen vom Datentyp einer Oberklasse auch auf Objekte der Unterklasse zeigen können, ergeben sich Situationen, in denen erst zur Laufzeit bekannt ist, welchen Datentyp das Objekt hat, auf das eine bestimmte Variable zeigt. Wie man damit umgeht, zeige ich konkret an einem Beispiel:
  
Zeile 6: Zeile 10:
 <HTML> <HTML>
  
-<div class="java-online" style="height: 300px; width: 100%" data-java-online="{'withBottomPanel': false}">+<div class="java-online" style="height: 370px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'Casting1'}">
  
 <script type="text/plain" title="Tier.java"> <script type="text/plain" title="Tier.java">
Zeile 33: Zeile 37:
 <HTML> <HTML>
  
-<div class="java-online" style="height: 300px; width: 100%" data-java-online="{ }">+<div class="java-online" style="height: 450px; width: 100%" data-java-online="'id': 'Casting2' , 'withBottomPanel': true}">
 <script type="text/plain" title="Main.java"> <script type="text/plain" title="Main.java">
 Hund h = new Hund("Bello"); Hund h = new Hund("Bello");
Zeile 111: Zeile 115:
 <HTML> <HTML>
  
-<div class="java-online" style="height: 300px; width: 100%" data-java-online="{ }">+<div class="java-online" style="height: 300px; width: 100%" data-java-online="'id': 'Casting3', 'withBottomPanel': true }">
 <script type="text/plain" title="Main.java"> <script type="text/plain" title="Main.java">
 Hund h = new Hund("Bello"); Hund h = new Hund("Bello");
Zeile 181: Zeile 185:
    h.schreibeName();    h.schreibeName();
 </code> </code>
-sind diese Anweisungen zulässig? Falls "nein": Warum nicht? Probiere sie aus, indem Du sie ins Beispiel oben einfügst! +sind diese Anweisungen zulässig? Falls "nein": Warum nicht? Probiere sie aus, indem Du sie ins Beispiel oben einfügst! \\ \\  
- +[[.aufgabe12:loesungen:start|Lösungen]]
-<hidden Lösungen>Hier sind die Lösungen</hidden>+
 ==== 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 209: Zeile 212:
 <HTML> <HTML>
  
-<div class="java-online" style="height: 300px; width: 100%" data-java-online="{ }">+<div class="java-online" style="height: 300px; width: 100%" data-java-online="'id': 'Casting4', 'withBottomPanel': true}">
 <script type="text/plain" title="Main.java"> <script type="text/plain" title="Main.java">
 Hund h = new Hund("Bello"); Hund h = new Hund("Bello");
Zeile 269: Zeile 272:
  
 == Aufgaben == == Aufgaben ==
-  3. Nimm in Zeile 8 das Casting weg, schreibe also ''Hund h2 = t;''. Was passiert? Warum? +3. Nimm in Zeile 8 das Casting weg, schreibe also ''Hund h2 = t;''. Was passiert? Warum? \\ \\  
-  Wenn wir ungerechtfertigt casten, vertraut uns der Compiler dann? Probiere es aus, indem Du die Zeile 5 ersetzt durch ''((Katze)t).miaue();''. Was passiert? Warum? +4. Wenn wir ungerechtfertigt casten, vertraut uns der Compiler dann? Probiere es aus, indem Du die Zeile 5 ersetzt durch ''((Katze)t).miaue();''. Was passiert? Warum? \\ \\  
-  Verändert das Casten durch den Term ''(Katze)t'' das Objekt, auf das ''t'' zeigt von einem ''Tier''-Objekt zu einem ''Katze''-Objekt? Begründe Deine Antwort! +5. Verändert das Casten durch den Term ''(Katze)t'' das Objekt, auf das ''t'' zeigt von einem ''Tier''-Objekt zu einem ''Katze''-Objekt? Begründe Deine Antwort! \\ \\  
 + \\  
 +[[.aufgabe345:loesungen:start|Lösungen]]
 ==== 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 ''instanceof''. Damit lässt sich testen, ob ein Objekt einer bestimmten Klasse angehört. 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 ''instanceof''. Damit lässt sich testen, ob ein Objekt einer bestimmten Klasse angehört.
 <HTML> <HTML>
  
-<div class="java-online" style="height: 300px; width: 100%" data-java-online="{ }">+<div class="java-online" style="height: 300px; width: 100%" data-java-online="'id': 'Casting5', 'withBottomPanel': true}">
 <script type="text/plain" title="Main.java"> <script type="text/plain" title="Main.java">
 Hund h = new Hund("Bello"); Hund h = new Hund("Bello");
klassen2/casting/start.1588656929.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki