Typkonvertierung und Casten?

Status
Nicht offen für weitere Antworten.

Math55

Bekanntes Mitglied
moin, hat jemand mal einen link, wo das mit dem upcasten und downcasten erklärt wird. also was ist erlaubt, wo muss ich nicht explizit casten oder wo muss ich explizit casten. wenn ich jetzt eine klasse habe wie zum beispiel:

Code:
class A {
    void m (A a) { System.out.println("1"); } 
}

class B extends A {
    void m (A a) { System.out.println("2"); } 
    void m (B b) { System.out.println("3"); } 
}

class Test {
    public static void main(String[] argv) {
        B b = new B();
        A a = b; //???
        
        a.m(a);
        a.m(b);
        b.m(a);
        b.m(b);
    }
}
was genau passiert da in der zeile mit den fragezeichen und warum ist die ausgabe '2223'? also solche sachen würd ich gern wissen :).

man dankt!!
 

Icewind

Bekanntes Mitglied
die ausgabe lässt sich leicht erklären:

also a.m(a); gibt 2 aus weil du mit deiner referenz a ein Objekt des typs B referenzierst und bei der funktion m(A) gibt es dann eben 2 aus.
a.m(b); die referenz von A kennt nur die funktionen von A und deswegen wird auch die m(A) funktion aufgerufen weil das ja auch mit unterklassen von A funktioniert.
b.m(a); selbsterklärend oder??
b.m(b); sollte auch klar sein oder??

hoffe ich konnte mal etwas helfen
 

Math55

Bekanntes Mitglied
hi, danke erstmal. also genau auf die zweite 2 kommt es mir an. wieso wird da nicht 1 ausgegeben?

gruß
 

Icewind

Bekanntes Mitglied
weil es eben eine instanz von der klasse B ist und nicht von der Klasse A... und B gibt eben 2 aus... du weist der referent von der Klasse A eben nur eine Instanz der Klasse B zu...
 

Math55

Bekanntes Mitglied
hi, also das kapier ich nicht. a.m(b) würde doch dann eher 3 ausgeben, da ja b als parameter eher zu void m(B b) passen würde?

gruß[/i]
 

Sky

Top Contributor
Math55 hat gesagt.:
hi, also das kapier ich nicht. a.m(b) würde doch dann eher 3 ausgeben, da ja b als parameter eher zu void m(B b) passen würde?

gruß[/i]
Die Klasse A kennt aber keine Methode "m(B b)". Der Aufruf von a.m(...) mit einem Objekt der Klasse B geht nur, weil B von A erbt.
So und nun geht es darum, zur Laufzeit die Methode gesucht werden muss, die am besten passt. Da A nur m(A a) kennt wird von unten in der Ableitungs-Hirachie diese Methode gesucht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Auswertung von Operatoren und Typkonvertierung! AAARGGH! Allgemeine Java-Themen 3
K Typkonvertierung einer Klasse Allgemeine Java-Themen 3
Baldur Datentypen Unnötiges Casten in Templatecode? Allgemeine Java-Themen 4
X Datentypen Byte geht nicht höher als 126 auch nicht mit casten? Allgemeine Java-Themen 22
F Klassen Casten Allgemeine Java-Themen 2
W Datentypen Datentyp "Number" casten? Allgemeine Java-Themen 5
J byte - hex - byte.. casten Allgemeine Java-Themen 8
N Casten durch generic vermeiden ?? Allgemeine Java-Themen 10
M Casten von Liste nach Array schlägt fehl?? Allgemeine Java-Themen 3
S Type safety Warnings beim casten von Generics Allgemeine Java-Themen 6
B Pattern gesucht, Programm Optionen, Casten vermeiden Allgemeine Java-Themen 3
C casten vom Typ Object nach Double[][] Allgemeine Java-Themen 2
J Casten ueber generischen Parameter? Allgemeine Java-Themen 5
Q Typen von Generics & Casten Allgemeine Java-Themen 3
M Andere Möglichkeit zu casten Allgemeine Java-Themen 8
G Objekte automatisch casten Allgemeine Java-Themen 10
M wie casten ? Allgemeine Java-Themen 7
T casten von Objekten aus einer ArrayList Allgemeine Java-Themen 4
F Welcher Datentyp in welchen casten? Allgemeine Java-Themen 11
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
D toArray() bei ArrayList casten Allgemeine Java-Themen 10
N treenode casten? Allgemeine Java-Themen 2
R object zu array casten. Allgemeine Java-Themen 2
S Dynamisches Casten Allgemeine Java-Themen 5
D Object in int casten Allgemeine Java-Themen 7
D Optimierung beim Casten Allgemeine Java-Themen 4
P Dynamisch casten - möglich? wie? Allgemeine Java-Themen 5
S Compliance 5.0 prob: HashMap von obj casten Allgemeine Java-Themen 3
M Object in HashMap casten Allgemeine Java-Themen 4
C Reflection und variable casten ! Allgemeine Java-Themen 10
K Klasse dynamisch casten Allgemeine Java-Themen 14
S ClassCastException beim Casten in eine Klasse Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben