java:type_casting

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
java:type_casting [2016/02/15 05:38]
gthanos [Κριτήρια χρήσης της κληρονομικότητας ως εργαλείο ανάπτυξης λογισμικού]
java:type_casting [2017/02/16 13:33]
gthanos [Κριτήρια χρήσης της κληρονομικότητας ως εργαλείο ανάπτυξης λογισμικού]
Line 84: Line 84:
 </​code>​ </​code>​
  
-Και οι δύο κλάσεις μεταγλωττίζονται και ​λειτουργικά ​παράγουν το ίδιο αποτέλεσμα. Το ερώτημα είναι ποια από τις δύο μεθόδους θα προτιμήσουμε. Η απάντηση είναι απλή και συνίσταται στο εξής: Εάν ο νέος τύπος δεδομένων που προκύπτει ​είναι της ίδιας ​κατηγορίας με τον τύπο δεδομένων της αρχικής κλάσης τότε μπορούμε να χρησιμοποιήσουμε κληρονομικότητα. Εάν όμως ο νέος τύπος δεδομένων δεν είναι της ​ίδιας κατηγορίας ​με τον προηγούμενο τότε η 1η επιλογή είναι η βελτιστη+Οι παραπάνω ​δύο κλάσεις μεταγλωττίζονται και παράγουν το ίδιο ​λειτουργικό ​αποτέλεσμα. Το ερώτημα είναι ποια από τις δύο μεθόδους θα προτιμήσουμε. Η απάντηση είναι απλή και συνίσταται στο εξής: Εάν ο νέος τύπος δεδομένων που προκύπτει ​ανήκει στον τύπο δεδομένων της αρχικής κλάσης τότε μπορούμε να χρησιμοποιήσουμε ​την ​κληρονομικότητα ​ως μέθοδο ανάπτυξης. Εάν όμως ο νέος τύπος δεδομένων δεν ​αποτελεί τύπο δεδομένων και της ​παραπάνω ​κατηγορίας.
  
-Για παράδειγμα,​ [[lib/​exe/​detail.php?​id=java%3Ainheritance&​media=java:super_sub_class.jpg|στο αρχικό παράδειγμα της κληρονομικότητας]],​ από τον ​+Εκφράζοντας το παραπάνω με κώδικα,​ η παρακάτω σχέση θα πρέπει να στέκει και λογικά εκτός από συντακτικά. 
 +<code java> 
 +InheritedClass child = new InheritedClass();​ 
 +ParentClass parent = child; 
 +</​code>​ 
 + 
 +Για παράδειγμα,​ [[java:inheritance|στο αρχικό παράδειγμα της κληρονομικότητας]],​ από την κλάση Bicycle προκύπτουν οι κλάσεις //​MountainBike//,​ //​RoadBike//​ και //​TandemBike//​. Και οι 3 νέες κλάσεις είναι τύπου Bicycle, καθώς αποτελούν εξειδικεύσεις της γενικής κλάσης του ποδηλάτου.  
 + 
 +Στην περίπτωση που περιγράψαμε παραπάνω κάτι τέτοιο δεν ισχύει. Αν και η κλάση του κυβοειδούς χρειάζεται ένα ορθογώνιο παραλληλόγραμμο για να περιγραφεί,​ το κυβοειδές δεν είναι ορθογώνιο παραλληλόγραμμο. Δεν μπορούμε να πάμε δηλαδή από το κυβοειδές προς το ορθογώνιο παραλληλόγραμμο διατηρώντας τις βασικές ιδιότητες του κυβοειδούς. Το κυβοειδές είναι ένα τρισδιάστατο σχήμα, ενώ το ορθογώνιο παραλληλόγραμμο δισδιάστατο. Το κυβοειδές αποτελεί μία εντελώς νέα οντότητα σε σχέση με το ορθογώνιο παραλληλόγραμμο. Μπορούμε να το εκφράσουμε με την χρήση της κλάσης ενός ορθογώνιου παραλληλογράμμου,​ χωρίς όμως η χρήση του ορθογωνίου παραλληλογράμμου να είναι απαραίτητη ή να συνδέεται άμεσα με το κυβοειδές. 
 + 
 +|Προηγούμενο:​ [[ :​java:​inheritance | Κληρονομικότητα ]] | [[ :toc | Περιεχόμενα ]]  | Επόμενο:​ [[ :​java:​inheritance_subclassing_vs_encapsulating | Κριτήριo χρήσης της κληρονομικότητας]]|
java/type_casting.txt · Last modified: 2017/02/16 13:34 by gthanos