This shows you the differences between two versions of the page.
|
java:tostring [2017/01/26 10:44] gthanos [Αναπαράσταση δεδομένων αντικειμένου σε μορφή κειμένου] |
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( " | ||
| - | </ | ||
| - | |||
| - | Ένα σημαντικό μειονέκτημα της παραπάνω " | ||
| - | |||
| - | Ο σωστός τρόπος να επιτύχουμε αυτό που θέλουμε είναι υπερκαλύπτοντας τη μέθοδο **toString()**. Η υπερκάλυψη (**override**) μιας μεθόδου θα εξηγηθεί λεπτομερώς σε επόμενη ενότητα. Προς το παρόν, αρκεί να γνωρίζετε τα εξής: | ||
| - | |||
| - | <WRAP tip 80% center round> | ||
| - | * Η μέθοδος **toString** είναι ήδη ορισμένη για όλες τις κλάσεις και επιστρέφει μια κειμενική αναπαράσταση ενός αντικειμένου. | ||
| - | * Υπάρχει η δυνατότητα να την ξαναορίσουμε σε μια κλάση, υλοποιώντας τη με τον τρόπο που θέλουμε | ||
| - | * Η δική μας υλοποίηση, | ||
| - | </ | ||
| - | |||
| - | Ορίζουμε λοιπόν στην κλάση Point την μέθοδο public String toString() ως εξής: | ||
| - | |||
| - | <code java> | ||
| - | @Override | ||
| - | public String toString () { | ||
| - | return " | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | και τώρα όταν γράψουμε στο πρόγραμμά μας | ||
| - | |||
| - | <code java> | ||
| - | System.out.println(aPoint); | ||
| - | </ | ||
| - | |||
| - | θα εμφανιστεί στην οθόνη: '' | ||
| - | |||
| - | |Προηγούμενο: | ||