This shows you the differences between two versions of the page.
|
java:tostring [2016/02/19 12:31] doufexi created |
java:tostring [2022/02/24 12:42] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== | ||
| - | ===== Αναπαράσταση δεδομένων αντικειμένου σε μορφή κειμένου ===== | ||
| - | |||
| - | |||
| - | Θυμηθείτε την κλάση **Point** που ορίσαμε σε προηγούμενη ενότητα. Θα θέλαμε να μπορούμε να γράψουμε: | ||
| - | |||
| - | <code java> | ||
| - | Point aPoint = new Point(4, 5); | ||
| - | System.out.println(aPoint); | ||
| - | </ | ||
| - | |||
| - | και να εκτυπωθούν στην οθόνη τα δεδομένα του σημείου που ορίσαμε, | ||
| - | |||
| - | Αν όμως εκτελέσουμε το παραπάνω κομμάτι κώδικα, | ||
| - | |||
| - | Αυτό που δε φαίνεται στον κώδικα είναι ότι όταν ζητάμε να αντιμετωπιστεί ένα αντικείμενο ως κείμενο (πχ. για να εκτυπωθεί στην οθόνη) τότε καλείται έμμεσα μια συνάρτηση με όνομα toString η οποία είναι προκαθορισμένη για κάθε κλάση και επιστρέφει ένα String όπως το Point@5ffdfb42. Στην πραγματικότητα ο κώδικας που εκτελέστηκε ήταν : | ||
| - | |||
| - | <code java> | ||
| - | System.out.println(aPoint.toString()); | ||
| - | </ | ||
| - | |||
| - | Το ερώτημα είναι, πώς μπορούμε να εκτυπώσουμε το πιο φιλικό '' | ||
| - | |||
| - | Ένας απλός τρόπος είναι χρησιμοποιώντας τους getters που παρέχει η κλάση: | ||
| - | |||
| - | <code java> | ||
| - | System.out.println( " | ||
| - | </ | ||
| - | |||
| - | Δύο μειονεκτήματα αυτής της λύσης είναι ότι συχνά μια κλάση δεν παρέχει getters για όλα τα πεδία που πιθανώς θέλουμε να εμφανίζονται σε μια " | ||
| - | |||
| - | Ο σωστός τρόπος να επιτύχουμε αυτό που θέλουμε είναι υπερκαλύπτοντας τη μέθοδο **toString()**. Η υπερκάλυψη (**override**) μιας μεθόδου θα εξηγηθεί λεπτομερώς σε επόμενη ενότητα. Προς το παρόν, αρκεί να γνωρίζετε τα εξής: | ||
| - | |||
| - | - Η μέθοδος toString είναι ήδη ορισμένη για όλες τις κλάσεις και επιστρέφει μια κειμενική αναπαράσταση ενός αντικειμένου. | ||
| - | - Υπάρχει η δυνατότητα να την ξαναορίσουμε σε μια κλάση, υλοποιώντας τη με τον τρόπο που θέλουμε | ||
| - | - Η δική μας υλοποίηση, | ||
| - | |||
| - | Ορίζουμε λοιπόν στην κλάση Point: | ||
| - | |||
| - | <code java> | ||
| - | @Override | ||
| - | public String toString () { | ||
| - | return " | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | και τώρα όταν γράψουμε στο πρόγραμμά μας | ||
| - | |||
| - | <code java> | ||
| - | System.out.println(aPoint); | ||
| - | </ | ||
| - | |||
| - | θα δούμε στην οθόνη: '' | ||
| - | |||
| - | |Προηγούμενο: | ||