Casting στην Java
Posted: Tue Jul 08, 2008 10:13 am
Καλημέρα. Έχω κάμποσες απορίες με τα αντικείμενα αν μπορεί κάποιος να με βοηθήσει να τα ξεκαθαρίσω.
Έστω ότι έχω δυο τάξεις την Ρ1 και την υποκλάσση της Ρ2. Η Ρ1 έχει μόνο μια μεταβλητή k ενώ η στην Ρ2 έχω ορίσει μόνο την l.
Εάν κάνω:
το one τι τύπου είναι? Η getClass μου το δίνει μόνο Ρ2 ενώ η instanceof και Ρ1 και Ρ2. Καταλαβαίνω ότι αν είναι Ρ2 είναι λογικό να συμβαίνει αυτό αλλά δεν πιάνω γιατί δεν μπορώ να δω με το one την μεταβλητή l αλλά βλέπω μόνο την k
Για να δω και την l πρέπει να κάνω
Εάν τώρα κάνω
στο compile όλα καλά αλλά κατά την εκτέλεση μου σκάει
Αν μπορεί να μου εξηγήσει κάποιος τι συμβαίνει στα παρασκήνια

Έστω ότι έχω δυο τάξεις την Ρ1 και την υποκλάσση της Ρ2. Η Ρ1 έχει μόνο μια μεταβλητή k ενώ η στην Ρ2 έχω ορίσει μόνο την l.
Εάν κάνω:
Code: Select all
P1 one = new P2();

Code: Select all
((P2)one).l
Code: Select all
Ρ2 two = (P1)new P2();
Η λογική λέει ότι ένα αντικείμενο Ρ1 δεν είναι απαραίτητα Ρ2 γιαυτό και το πρόβλημα. Αλλά συνεχίζω να μην καταλαβαίνω σε μια τέτοια δήλωση τι τύπου θα είναι το αντικείμενο.Exception in thread "main" java.lang.ClassCastException: P1 cannot be cast to P2
Αν μπορεί να μου εξηγήσει κάποιος τι συμβαίνει στα παρασκήνια

