This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision | Previous revision | ||
|
java:type_casting [2021/03/15 20:13] gthanos |
java:type_casting [2021/04/05 15:09] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Ρητές (explicit) και άρρητες (implicit) μετατροπές τύπων ====== | ||
| - | Σε συνέχεια του παραδείγματος κληρονομικότητας της προηγούμενης ενότητας μπορούμε να γράψουμε | ||
| - | |||
| - | <code java> | ||
| - | Rectangle r1 = new Rectangle(100, | ||
| - | </ | ||
| - | |||
| - | Από την παραπάνω δήλωση η μεταβλητή '' | ||
| - | |||
| - | <code java> | ||
| - | BasicRectangle r2 = r1; | ||
| - | //ή ισοδύναμα | ||
| - | BasicRectangle r2 = new Rectangle(100, | ||
| - | </ | ||
| - | |||
| - | Την παραπάνω ανάθεση την ονομάζουμε άρρητη μετατροπή (//implicit casting//) διότι αναθέτουμε ένα αντικείμενο του κληρονομούμενου τύπου δεδομένων ('' | ||
| - | |||
| - | Ας δοκιμάσουμε το ανάποδο παράδειγμα τώρα | ||
| - | |||
| - | <code java> | ||
| - | BasicRectangle r3 = new Rectangle(100, | ||
| - | Rectangle r4 = r3; | ||
| - | </ | ||
| - | |||
| - | Σε αυτή την περίπτωση ο // | ||
| - | |||
| - | <code java> | ||
| - | BasicRectangle r3 = new Rectangle(100, | ||
| - | Rectangle r4 = (Rectangle)r3; | ||
| - | </ | ||
| - | |||
| - | Σε αυτή την περίπτωση ο προγραμματιστής βεβαιώνει τον // | ||
| - | |||
| - | Ένας πιο ασφαλής τρόπος για να επαναλάβουμε τον παραπάνω κώδικα, | ||
| - | |||
| - | <code java> | ||
| - | BasicRectangle r3 = new Rectangle(100, | ||
| - | Rectangle r4; | ||
| - | if (r3 instanceof Rectangle) { | ||
| - | r4 = (Rectangle)r3; | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | |Προηγούμενο: | ||