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 04:54]
gthanos
java:type_casting [2017/02/16 13:34] (current)
gthanos
Line 7: Line 7:
 </​code>​ </​code>​
  
-Από την παραπάνω δήλωση η μεταβλητή ''​myBike''​ είναι τύπου ''​MountainBike''​. Επειδή όμως ο τύπος ''​MountainBike''​ κληρονομεί από την μεταβλητή ''​Bicycle''​ **__η συγκεκριμένη μεταβλητή είναι και τύπου Bicycle__**. Επομένως θα μπορούσαμε να γράψουμε+Από την παραπάνω δήλωση η μεταβλητή ''​myBike''​ είναι τύπου ''​MountainBike''​. Επειδή όμως ο τύπος ''​MountainBike''​ κληρονομεί από την μεταβλητή ''​Bicycle''​ **__η συγκεκριμένη μεταβλητή είναι και τύπου Bicycle__**. Επομένωςθα μπορούσαμε να γράψουμε
  
 <code java> <code java>
Line 15: Line 15:
 </​code>​ </​code>​
  
-Την παραπάνω ανάθεση την ονομάζουμε //Implicit Casting// διότι αναθέτουμε μία μεταβλητή ενός τύπου δεδομένων (''​myBike''​) σε μία μεταβλητή γονικού τύπου δεδομένων (''​myBicycle''​),​ χωρίς type casting.+Την παραπάνω ανάθεση την ονομάζουμε ​άρρητη μετατροπή (//implicit casting//διότι αναθέτουμε μία μεταβλητή ενός τύπου δεδομένων (''​myBike''​) σε μία μεταβλητή γονικού τύπου δεδομένων (''​myBicycle''​),​ χωρίς ​να ορίζουμε μία μετατροπή τύπου (//type cast//).
  
 Ας δοκιμάσουμε το ανάποδο παράδειγμα τώρα Ας δοκιμάσουμε το ανάποδο παράδειγμα τώρα
Line 24: Line 24:
 </​code>​ </​code>​
  
-Σε αυτή την περίπτωση ο compiler διαμαρτύρεται,​ διότι η μεταβλητή ''​myBicycle''​ είναι τύπου ''​Bicycle''​ και δεν είναι απαραίτητο ότι είναι και τύπου ''​MountainBike''​. Αν θέλουμε να ξεπεράσουμε το παραπάνω ​πρόβλημα θα πρέπει να γράψουμε το εξής:+Σε αυτή την περίπτωση ο compiler διαμαρτύρεται,​ διότι η μεταβλητή ''​myBicycle''​ είναι τύπου ''​Bicycle''​ και δεν είναι απαραίτητο ότι είναι και τύπου ''​MountainBike''​. Αν θέλουμε να ξεπεράσουμε το παραπάνω ​μήνυμα λάθους του compiler ​θα πρέπει να γράψουμε το εξής:
  
 <code java> <code java>
Line 31: Line 31:
 </​code>​ </​code>​
  
-Εδώ ενημερώνουμε τον compiler ότι η μεταβλητή ''​myBicycle''​ είναι και τύπου ''​MountainBike'',​ λαμβάνοντας ο προγραμματιστής την ευθύνη ότι ​κάτι τέτοιο ​ισχύει. Εάν δεν ισχύει ​κάτι τέτοιο ​κατά την εκτέλεση του προγράμματος θα παραχθεί μία εξαίρεση (exception)*. Θα δούμε πιο κάτω τι είναι και πως διαχειριζόμαστε τις εξαιρέσεις.+Εδώ ενημερώνουμε τον compiler ότι η μεταβλητή ''​myBicycle''​ είναι και τύπου ''​MountainBike'',​ λαμβάνοντας ο προγραμματιστής την ευθύνη ότι ​αυτό ισχύει. Εάν δεν ισχύεικατά την εκτέλεση του προγράμματος θα παραχθεί μία εξαίρεση (exception)*. Θα δούμε πιο κάτω τι είναι και πως διαχειριζόμαστε τις εξαιρέσεις.
  
 Ένας πιο ασφαλής τρόπος για να επαναλάβουμε τον παραπάνω κώδικα,​ χωρίς να παραχθεί εξαίρεση είναι ο εξής: Ένας πιο ασφαλής τρόπος για να επαναλάβουμε τον παραπάνω κώδικα,​ χωρίς να παραχθεί εξαίρεση είναι ο εξής:
Line 43: Line 43:
 </​code>​ </​code>​
  
-===== Κριτήρια χρήσης της κληρονομικότητας ως εργαλείο ανάπτυξης λογισμικού ===== +ροηγούμενο:​ [[ :​java:​inheritance | Κληρονομικότητα ​]] | [[ :toc | Περιεχόμενα ]]  | Επόμενο: [[ :​java:​inheritance_subclassing_vs_encapsulating | Κριτήριo χρήσης της κληρονομικότητας]]|
- +
-Ας επανέλθουμε στο παράδειγμα ​του ορθογωνίου παραλληλογράμμου το οποίο έχουμε συναντήσει αρκετές φορές στο παρελθόν. +
- +
java/type_casting.1455512052.txt.gz · Last modified: 2016/02/26 11:15 (external edit)