java:equals

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

java:equals [2017/03/01 15:18]
doufexi created
java:equals [2017/03/01 15:30] (current)
doufexi [Η μέθοδος equals]
Line 65: Line 65:
     ​     ​
 Δεν είναι πάντα απαραίτητο να συγκρίνουμε όλα τα πεδία ένα προς ένα, αλλά μόνο αυτά που θεωρούμε ότι ισότητα μεταξύ τους σημαίνει ισότητα ανάμεσα στα δύο αντικείμενα. Επίσης,​ αν κάποια πεδία δεν είναι βασικοί τύποι όπως στο παράδειγμα,​ τότε θα πρέπει να χρησιμοποιήσουμε equals για τη σύγκριση. Δείτε το παράδειγμα εργαστηρίου με την κλάση Deck, όπου τα πεδία είναι τύπου String και τα συγκρίνουμε με equals. ​ Δεν είναι πάντα απαραίτητο να συγκρίνουμε όλα τα πεδία ένα προς ένα, αλλά μόνο αυτά που θεωρούμε ότι ισότητα μεταξύ τους σημαίνει ισότητα ανάμεσα στα δύο αντικείμενα. Επίσης,​ αν κάποια πεδία δεν είναι βασικοί τύποι όπως στο παράδειγμα,​ τότε θα πρέπει να χρησιμοποιήσουμε equals για τη σύγκριση. Δείτε το παράδειγμα εργαστηρίου με την κλάση Deck, όπου τα πεδία είναι τύπου String και τα συγκρίνουμε με equals. ​
 +
 +===== Ο χαρακτηρισμός @Override =====
 +
 +Κάθε αντικείμενο που ορίζουμε στη Java είναι τελικά και τύπου Object. Για να είμαστε πιο ακριβείς,​ κάθε κλάση που ορίζουμε είναι απόγονος της βασικής κλάσης Object. Περισσότερες λεπτομέρειες θα δούμε στην ενότητα για την κληρονομικότητα. ​
 +
 +Στην κλάση Object ορίζονται κάποιες μέθοδοι που ισχύουν για όλους τους απογόνους. Ανάμεσα σε αυτές είναι η equals και η [[ :​java:​toString | toString ]]. Η default λειτουργία της equals είναι να κάνει απλή σύγκριση με ==. Η default λειτουργία της toString είναι να επιστρέφει ένα ειδικό string που χαρακτηρίζει το αντικείμενο. ​
 +
 +Αν δεν επαναπροσδιορίσουμε τις υλοποιήσεις αυτών των μεθόδων για τη δική μας κλάση, τότε όποτε τις χρησιμοποιούμε θα εκτελείται ο "​default"​ κώδικας. Αλλά όπως είδαμε ακριβώς πριν, μπορούμε να γράψουμε τι δική μας υλοποίηση της equals για κάθε δική μας κλάση. Όταν κάνουμε κάτι τέτοιο,​ συνηθίζεται να βάζουμε πριν την υλοποίηση το χαρακτηρισμό @Override ο οποίος "​ενημερώνει"​ τον compiler ότι η παρακάτω μέθοδος υπερισχύει της αντίστοιχης default μεθόδου. Η χρήση του @Override έχει το πλεονέκτημα ότι αν κάνουμε κάποιο λάθος στις παραμέτρους ή στο όνομα ή στον τύπο επιστροφής της μεθόδου,​ ο compiler θα μας ενημερώσει (θα ανιχνεύσει ότι αυτό που γράφουμε δεν αντιστοιχεί σε κάποια από τις μεθόδους της Object).
            
java/equals.txt · Last modified: 2017/03/01 15:30 by doufexi