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
java:type_casting [2016/02/15 05:38]
gthanos [Κριτήρια χρήσης της κληρονομικότητας ως εργαλείο ανάπτυξης λογισμικού]
java:type_casting [2017/02/16 13:34]
gthanos
Line 43: Line 43:
 </​code>​ </​code>​
  
-===== Κριτήρια χρήσης της κληρονομικότητας ως εργαλείο ανάπτυξης λογισμικού ===== +ροηγούμενο: [[ :​java:​inheritance | Κληρονομικότητα ]] [[ :toc | Περιεχόμενα ​]]  | Επόμενο: [[ :java:​inheritance_subclassing_vs_encapsulating | Κριτήριχρήσης της κληρονομικότητας]]|
- +
-Ας επανέλθουμε στο παράδειγμα του ορθογωνίου παραλληλογράμμου το οποίο έχουμε συναντήσει αρκετές φορές στο παρελθόν και ας προσπαθήσουμε να δημιουργήσουμε την κλάση ενός [[wp>​Cuboid|κυβοειδούς]] με χρήση της υφιστάμενης κλάσης του ​[[java:class|ορθογωνίου παραλληλογράμμου]]. +
- +
-Πριν ξεκινήσουμε την υλοποίηση θα πρέπει να αποφασίσουμε εάν θέλουμε να δημιουργήσουμε το κυβοειδές ​χρησιμοποιώντας ως μεταβλητή της ​νέας κλάσης ένα αντικείμενο της κλάσης //​Rectangle//​ ή επιθυμούμε να επεκτείνουμε την κλάση //​Rectangle//​ μέσω της νέας κλάσης. Δείτε παρακάτω τις δύο παραλλαγές της κλάσης //Cuboid// με και χωρίς κληρονομικότητα. +
- +
-<​code ​java Cuboid.java>​ +
-public class Cuboid { +
-  Rectangle rec; +
-  int length; +
-   +
-  public Cuboid(int l, int w, int h) { +
-    rec = new Rectangle(w,​h);​ +
-    length = l; +
-  } +
-   +
-  public int getLength() { return length; } +
-  public void setLength(int l) { length = l; } +
-   +
-  public int volume() { return length * rec.area(); } +
-+
-</​code>​ +
- +
-ή  +
- +
-<code java Cuboid.java>​ +
-public class Cuboid extends Rectangle { +
-  int length; +
-   +
-  public Cuboid(int l, int w, int h) { +
-    super(w,​h);​ +
-    length = l; +
-  } +
-   +
-  public int getLength() { return length; } +
-  public void setLength(int l) { length = l; } +
-   +
-  public int volume() { return length * area(); } +
-+
-</​code>​ +
- +
-Και οι δύο κλάσεις μεταγλωττίζονται και λειτουργικά παράγουν ​το ίδιο αποτέλεσμα. Το ερώτημα είναι ποια από τις δύο μεθόδους θα προτιμήσουμε. Η απάντηση είναι απλή και συνίσταται στο εξής: Εάν ο νέος τύπος δεδομένων που προκύπτει είναι της ίδιας κατηγορίας με τον τύπο δεδομένων της αρχικής κλάσης τότε μπορούμε να χρησιμοποιήσουμε κληρονομικότητα. Εάν όμως ο νέος τύπος δεδομένων δεν είναι της ίδιας κατηγορίας με τον προηγούμενο τότε η 1η επιλογή είναι η βελτιστη.  +
- +
-Για παράδειγμα,​ [[lib/​exe/​detail.php?​id=java%3Ainheritance&​media=java:​super_sub_class.jpg|στο αρχικό παράδειγμα ​της κληρονομικότητας]], από τον ​+
java/type_casting.txt · Last modified: 2017/02/16 13:34 by gthanos