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 [2021/02/28 17:39] – [2. Aspekt: Casten] 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, 'id': 'Casting1'}">+<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="{ 'id': 'Casting2' }">+<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="{ 'id': 'Casting3' }">+<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]] [[.aufgabe12:loesungen:start|Lösungen]]
 ==== 2. Aspekt: Casten ==== ==== 2. Aspekt: Casten ====
Zeile 208: Zeile 212:
 <HTML> <HTML>
  
-<div class="java-online" style="height: 300px; width: 100%" data-java-online="{ 'id': 'Casting4'}">+<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 268: 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? \\ \\  
-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? +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? \\ \\  
-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! +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]] [[.aufgabe345:loesungen:start|Lösungen]]
 ==== 3. Aspekt: instanceof ==== ==== 3. Aspekt: instanceof ====
Zeile 277: Zeile 281:
 <HTML> <HTML>
  
-<div class="java-online" style="height: 300px; width: 100%" data-java-online="{ 'id': 'Casting5'}">+<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.1614530389.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki