Φωτογραφία Νικόλαος Πανάγος
Απάντηση: Re: Πρόσβαση σε νέες μεταβλητές παράγωγης κλάσης με setter
από Νικόλαος Πανάγος - Tuesday, 13 December 2011, 7:04 PM
 
Εύλογες ερωτήσεις Κωστή και χαίρομαι που τις κάνεις.
Το casting γενικά θεωρείται κακό γιατί έχουμε αμεση μετατροπή ενός τύπου σε έναν άλλον. Είναι επικίνδυνο να το χρησιμοποιούμε διαρκώς αλλά σε κάποιες περιπτώσεις είναι χρήσιμο, αρκεί να ξέρουμε τι κάνουμε!
Εγώ θα σας προτείνω να το αποφεύγετε όπως γράφω και στις σημειώσεις, γιατί μπορούμε να πετύχουμε το επιθυμητο αποτέλεσμα χωρίς casting.

Πρώτη περίπτωση, να αρχικοποιήσεις το αντικείμενο παράγωγης κλάσης με τον constructor που αρχικοποιεί το αντικείμενο και να το 'αποθηκεύσεις' σε μία αναφορά κλάσης βάσης, π.χ.:

BaseClass r = new ChildClass(arg1, arg2, arg3, ...);

Δεύτερη περίπτωση, να το 'αποθηκεύσεις' σε μία αναφορά παράγωγης κλάσης, να το αρχικοποιήσεις μέσω αυτής της αναφοράς και μετά να το αποθηκεύσεις σε μία αναφορά κλάσης βάσης:

ChildClass r1 = new ChildClass();
r1.setSalary(1300);
....
BaseClass r2 = r1;

Προσωπικά προτιμώ τον 1ο τρόπο.