Java Klasse Object

Moritz1234

Mitglied
Hallo, ich hätte eine Frage zu dem Code schnipsel:

Object x;
x = new Klasse();
x=2;

Object ist ja die Oberklasse aller klassen, d.h alle Klassen erben von Object, weshlab der obere code problemos funktionieren würde.
Nennt man das dann aber einen Downcast ? Oder wie erklärt man in Worten was da passiert? Und bei der zuweisung von 2, das nennt man Boxing oder? Da ein ein Referenztyp nur referenzen speichern kann, wird die 2 gekapselt in ein Wrapper Objekt, liege ich hier richtig? Danke im Voraus!
 
Nennt man das dann aber einen Downcast ?
Dies nennt man Upcast bzw. Upcasting, da du die Klassenhierarchie nach oben kletterst. Object schwebt über allen Klassen, also ganz oben. Dowcasting wäre z.B. so was:
Java:
Object a = new Klasse()
Klasse x;
x = (Klasse) a;
x=2;
Downcasting geht also nur mit einem explizitem Cast, der zur Laufzeit schief gehen kann. (Edit: Streng genommen, ist das kein Downcasting, da nach dem explizitem Cast ein Objekt der Klasse "Klasse" einer Variablen des Typs "Klasse" zugeordnet wird. Downcasting ist in Java also nicht erlaubt.)

nd bei der zuweisung von 2, das nennt man Boxing oder? Da ein ein Referenztyp nur referenzen speichern kann, wird die 2 gekapselt in ein Wrapper Objekt, liege ich hier richtig? Danke im Voraus!
Das ist korrekt.
 
Ist das wirklich ein Upcast? Ich hätte das jetzt eher mit nein beantwortet und gesagt ein Upcast in diesem Fall wäre:
Code:
Object y = (Object)x;

Aber ist nach der Definition schon die Deklaration Supertyp x = new Subtyp() wirklich auch schon ein Upcast?

(Die Bedeutung ist mir klar, es geht mir nur ums Wording)
 
Ich würde das spontan mal so definieren:

Gegeben seien Typen T und T' mit T != T', außerdem eine Instanz t von T. Kann man nun t wie eine Instanz von T' behandeln, liegt
1. ein Upcast vor, wenn T' Superklasse von T ist
2. ein Downcast vor, wenn T' Subklasse von T ist.

Dass in Java der Upcast implizit erfolgt, ändert daran m. E. nichts.
 

Zurück
Oben