Vererbung Zuweisungsfehler (Kompilier- und Laufzeitfehler) herausfinden

Kaffi

Neues Mitglied
Guten Tag

Ich habe ein kleines Problem. Ich habe demnächst meine Semesterprüfung. Dort kommt wahrscheinlich eine Aufgabe vor, in welcher ich Vererbungszuweisungen untersuchen muss und dann herausfinden muss, wieso es dort KP,LZ fehler gibt.

Habe eine Beispielaufgabe angehängt und es würde mich freuen, wenn ihr mir ein paar Weisheiten auf den Weg geben könntet. Denn ich besitze leider keine Lösungen dazu, um das selbst herauszufinden.

Gruss
Kaffi
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    57,8 KB · Aufrufe: 49

kaoZ

Top Contributor
Naja zum Beispiel sowas hier


Java:
Giftnatter giftnatter;

giftnatter = (Giftnatter) new Anaconda();

Anaconda ist eine Unterklasse von Schlage, ebendso wie auch Giftnatter eine Unterklasse von Schlange ist , aber Anaconda ist nunmal keine Unterklasse von Giftnatter, demnach wird hier versucht per Cast eine Anaconda zu einer Giftnatter zu machen, wenn der Compiler dies zulässt führt es spätestens zur Laufzeit zu einer CastException oder insofern nicht abgefangen zu einem Laufzeitfehler, wenn man den Cast weglassen würde dürfte sich das ganze nichtmal Compilieren lassen, um nur einen der Haken in deiner Aufgabe aufzudecken .

Anders wäre es wenn folgendes passieren würde

Java:
Schlange schlange;

schlange = new Anaconda();

dieses könnte man weiderrum zuweisen da Anaconda von Schlange erbt, also eine Unterklasse davon ist.
 

Kaffi

Neues Mitglied
Zuerst ein Dankeschön für die rasche Antwort.


Aber wie sieht es aus, wenn ich zum Beispiel ein Interface gecastet habe. Wie merk ich dass es dort ein Fehler gibt?

Gibt es irgendwie generell ein Lösungsschema, dass ich benutzen kann????:L
 

kaoZ

Top Contributor
Ich würde dir in diesem Fall ja , Der Weg zum Java Profi von M.Inden, nahelegen, da steht es ziemlich detailliert erklärt, anderenfalls kann man dies auch anhand des statischen und dynamischen Typs herausfinden, also Compilier und Laufzeittyp ,dies fällt aber eigentlich schon eher in das Kapitel Typprüfung.

Wenn du Interfaces castest, Muss Das Interface Von Der Klasse in die Du Castest implementiert werden, falls dies nicht der Fall ist führt dies definitiv zu einem Laufzeitfehler :)
 

Ähnliche Java Themen

Neue Themen


Oben