User Tools

Site Tools


java:object_class

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 Both sides next revision
java:object_class [2018/02/09 15:23]
gthanos
java:object_class [2021/03/22 06:49]
gthanos
Line 16: Line 16:
  
 Λόγω της ύπαρξης της κλάσης //Object// όλα τα αντικείμενα στην Java κληρονομούν συγκεκριμένες μεθόδους που ορίζονται στην κλάση αυτή. Τις μεθόδους αυτές μπορείτε αν θέλετε να τις επαναορίσετε στις κλάσεις που δημιουργείτε ή να τις αφήσετε ως έχουν. Οι κυριότερες μέθοδοι της κλάσης //Object// είναι οι εξής: Λόγω της ύπαρξης της κλάσης //Object// όλα τα αντικείμενα στην Java κληρονομούν συγκεκριμένες μεθόδους που ορίζονται στην κλάση αυτή. Τις μεθόδους αυτές μπορείτε αν θέλετε να τις επαναορίσετε στις κλάσεις που δημιουργείτε ή να τις αφήσετε ως έχουν. Οι κυριότερες μέθοδοι της κλάσης //Object// είναι οι εξής:
-  * **public boolean equals(Object obj):** Η μέθοδος ελέγχει αν δύο αντικείμενα είναι ίδια. Εάν δεν την επαναορίσετε, η συγκεκριμένη μέθοδος ελέγχει εάν το αντικείμενο που την καλεί ταυτίζεται με το όρισμα που λαμβάνει. Μόνο στην περίπτωση που αυτά είναι ταυτόσημα επιστρέφει **true**, διαφορετικά επιστρέφει **false**. Ακόμη και εάν το αντικείμενο που την καλεί είναι του ίδιου τύπου με το αντικείμενο που συγκρίνεται και έχουν τις ίδιες τιμές για τα πεδία τους, αλλά πρόκειται για διαφορετικά αντικείμενα η μέθοδος επιστρέφει **false**. +  * **public boolean equals(Object obj):** Η μέθοδος ελέγχει αν δύο αντικείμενα είναι ίδια. Η μέθοδος ελέγχει εάν το αντικείμενο που την καλεί ταυτίζεται με το όρισμα που λαμβάνει. Μόνο στην περίπτωση που αυτά είναι ταυτόσημα επιστρέφει **true**, διαφορετικά επιστρέφει **false**. Εάν δύο διακριτά αντικείμενα έχουν πεδία με ίδιες τιμές η μέθοδος επιστρέφει **false**. 
-  * **public int hashCode():** Επιστρέφει έναν αριθμό (hash) για το συγκεκριμένο αντικείμενο. Ο αριθμός αυτός θα πρέπει να είναι μοναδικός για κάθε αντικείμενο. Κάθε κλήση της συγκεκριμένης μεθόδου σε ένα αντικείμενο πρέπει να επιστρέφει πάντα το ίδιο αποτέλεσμα. Δεν συνιστάται να επαναορίσετε τη συγκεκριμένη συνάρτηση.+  * **public int hashCode():** Επιστρέφει έναν θετικό ακέραιο (hash value) για το συγκεκριμένο αντικείμενο. Ο αριθμός αυτός είναι μοναδικός για κάθε αντικείμενο. 
   * **[[[[:java:toString|public String toString()]]:** Επιστρέφει μία αναπαράσταση σε μορφή [[http://docs.oracle.com/javase/7/docs/api/java/lang/String.html|String]] για το αντικείμενο. Η //default// υλοποίηση της μεθόδου ισοδυναμεί με την παρακάτω έκφραση. Συνιστάται ο επαναορισμός της μεθόδου της συγκεκριμένης κλάσης σε όλες τις κλάσεις που δημιουργείτε. Ο επαναορισμός της συγκεκριμένης μεθόδου μπορεί να χρησιμοποιηθεί για την επιστροφή ενός αλφαριθμητικού που περιέχει τις τιμές των πεδίων του εκάστοτε αντικειμένου.   * **[[[[:java:toString|public String toString()]]:** Επιστρέφει μία αναπαράσταση σε μορφή [[http://docs.oracle.com/javase/7/docs/api/java/lang/String.html|String]] για το αντικείμενο. Η //default// υλοποίηση της μεθόδου ισοδυναμεί με την παρακάτω έκφραση. Συνιστάται ο επαναορισμός της μεθόδου της συγκεκριμένης κλάσης σε όλες τις κλάσεις που δημιουργείτε. Ο επαναορισμός της συγκεκριμένης μεθόδου μπορεί να χρησιμοποιηθεί για την επιστροφή ενός αλφαριθμητικού που περιέχει τις τιμές των πεδίων του εκάστοτε αντικειμένου.
 <code java> <code java>
Line 29: Line 29:
     * **public final void wait(long timeout)**     * **public final void wait(long timeout)**
     * **public final void wait(long timeout, int nanos)**     * **public final void wait(long timeout, int nanos)**
 +
 +===== Έλεγχος ισότητας μεταξύ δύο αντικειμένων =====
 +
 +Ας υποθέσουμε ότι έχουμε δύο αντικείμενα της κλάσης [[https://courses.e-ce.uth.gr/ECE326/doku.php?do=export_code&id=java:inheritance&codeblock=2|Rectangle]] η οποία με τη σειρά της διαθέτει ένα πεδίο τύπου [[https://courses.e-ce.uth.gr/ECE326/doku.php?do=export_code&id=java:inheritance&codeblock=1|Point]].
 +
 +Θέλουμε να συγκρίνουμε τα δύο αυτά αντικείμενα μόνο ως προς την ισότητα. Για να το κάνουμε αυτό έχουμε δύο επιλογές:
 +  * **χρήση του τελεστή =**: Ο τελεστής = ελέγχει οι δύο μεταβλητές αριστερά και δεξιά του τελεστή δείχνουν στο ίδιο αντικείμενο. Ως εκ τούτου δεν μπορεί να χρησιμοποιηθεί στη συγκεκριμένη περίπτωση.
 +  * **χρήση της μεθόδου equals:** 
 +
  
 |Προηγούμενο: [[ :java:super_operator | Ο τελεστής super ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[ :java:polymorphism | Στατικός και Δυναμικός Πολυμορφισμός ]]| |Προηγούμενο: [[ :java:super_operator | Ο τελεστής super ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[ :java:polymorphism | Στατικός και Δυναμικός Πολυμορφισμός ]]|
java/object_class.txt · Last modified: 2021/03/22 07:36 (external edit)