This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
java:this_operator [2016/01/22 16:06] gthanos [Πρόσβαση σε πεδία και μεθόδους των αντικειμένων της κλάσης μέσω του τελεστή this] |
java:this_operator [2016/01/25 09:07] gthanos |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Ο τελεστής this ====== | ====== Ο τελεστής this ====== | ||
+ | |||
+ | ===== Πρόσβαση σε πεδία και μεθόδους των αντικειμένων της κλάσης μέσω του τελεστή this ===== | ||
+ | |||
+ | Ας ξαναγράψουμε το παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα, ως εξής | ||
+ | |||
+ | <code java> | ||
+ | public class Rectangle { | ||
+ | | ||
+ | private int width; | ||
+ | private int height; | ||
+ | private Point origin; | ||
+ | | ||
+ | // the Rectangle class has one constructor | ||
+ | public Rectangle(int width, int height, Point origin) { | ||
+ | width = width; | ||
+ | height = height; | ||
+ | origin = o; | ||
+ | } | ||
+ | ... | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Στον παραπάνω κώδικα οι τοπικές παράμετροι του κατασκευαστή συμπίπτουν με τα ονόματα των μεταβλητών της κλάσης. Σε αυτή την περίπτωση η τοπική μεταβλητή "κρύβει" (shadows) την μεταβλητή του αντικειμένου της κλάσης. Προκειμένου να έχουμε πρόσβαση στην μεταβλητή του αντικειμένου της κλάσης θα πρέπει να χρησιμοποιήσουμε τον τελεστή **this**, ως εξής: | ||
+ | |||
+ | <code java> | ||
+ | public class Rectangle { | ||
+ | | ||
+ | private int width; | ||
+ | private int height; | ||
+ | private Point origin; | ||
+ | | ||
+ | // the Rectangle class has one constructor | ||
+ | public Rectangle(int width, int height, Point origin) { | ||
+ | this.width = width; | ||
+ | this.height = height; | ||
+ | this.origin = o; | ||
+ | } | ||
+ | ... | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | __O τελεστής **this** υποδεικνύει το τρέχον αντικείμενο__. Με τον παραπάνω τρόπο μπορούμε να διακρίνουμε μία μεταβλητής του τρέχοντος αντικειμένου (this.variable) από μία τοπική μεταβλητή (variable) με το ίδιο όνομα. | ||
===== Πρόσβαση στους κατασκευαστές της κλάσης μέσω του τελεστή this ===== | ===== Πρόσβαση στους κατασκευαστές της κλάσης μέσω του τελεστή this ===== | ||
Line 77: | Line 119: | ||
</WRAP> | </WRAP> | ||
- | ===== Πρόσβαση σε πεδία και μεθόδους των αντικειμένων της κλάσης μέσω του τελεστή this ===== | ||
- | |||
- | Ας ξαναγράψουμε το παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα, ως εξής | ||
- | |||
- | <code java> | ||
- | public class Rectangle { | ||
- | | ||
- | private int width; | ||
- | private int height; | ||
- | private Point origin; | ||
- | | ||
- | // the Rectangle class has one constructor | ||
- | public Rectangle(int width, int height, Point origin) { | ||
- | width = width; | ||
- | height = height; | ||
- | origin = o; | ||
- | } | ||
- | ... | ||
- | } | ||
- | </code> | ||
- | |||
- | Στον παραπάνω κώδικα οι τοπικές παράμετροι του κατασκευαστή συμπίπτουν με τα ονόματα των μεταβλητών της κλάσης. Σε αυτή την περίπτωση η τοπική μεταβλητή "κρύβει" (shadows) την μεταβλητή του αντικειμένου της κλάσης. Προκειμένου να έχουμε πρόσβαση στην μεταβλητή του αντικειμένου της κλάσης θα πρέπει να χρησιμοποιήσουμε τον τελεστή **this**, ως εξής: | ||
- | |||
- | <code java> | ||
- | public class Rectangle { | ||
- | | ||
- | private int width; | ||
- | private int height; | ||
- | private Point origin; | ||
- | | ||
- | // the Rectangle class has one constructor | ||
- | public Rectangle(int width, int height, Point origin) { | ||
- | this.width = width; | ||
- | this.height = height; | ||
- | this.origin = o; | ||
- | } | ||
- | ... | ||
- | } | ||
- | </code> | ||
- | |||
- | __O τελεστής **this** υποδεικνύει το τρέχον αντικείμενο__. Με τον παραπάνω τρόπο μπορούμε να διακρίνουμε μία μεταβλητής του τρέχοντος αντικειμένου (this.variable) από μία τοπική μεταβλητή (variable) με το ίδιο όνομα. | ||
<WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
- | O τελεστής **this** δείχνει στο τρέχον αντικείμενο της εκάστοτε κλάσης, για λογαριασμό του οποίου εκτελείται. Με χρήση του τελεστή **this** μπορείτε να καλέσετε και μεθόδους της κλάσης από το τρέχον αντικείμενο, πράγμα που όμως δεν θα το δείτε στην πράξη, καθώς δεν υπάρχει ανάγκη για κάτι τέτοιο. | + | O τελεστής **this** δείχνει στο τρέχον αντικείμενο της εκάστοτε κλάσης, για λογαριασμό του οποίου εκτελείται. Μπορείτε να τον χρησιμοποιείτε τόσο για να προσπελάσετε τα πεδία του αντικειμένου ή να καλέσετε τον κατασκευαστή της κλάσης για το τρέχον αντικείμενο. Με χρήση του τελεστή **this** μπορείτε επίσης να καλέσετε και μεθόδους της κλάσης από το τρέχον αντικείμενο, πράγμα που όμως δεν θα το δείτε στην πράξη, καθώς δεν υπάρχει ανάγκη για κάτι τέτοιο. |
</WRAP> | </WRAP> | ||
|Προηγούμενο: [[:java:objects| Δημιουργώντας Αντικείμενα ]] | Επόμενο: [[:java:static_keyword | Στατικές μεταβλητές και μέθοδοι ]]| | |Προηγούμενο: [[:java:objects| Δημιουργώντας Αντικείμενα ]] | Επόμενο: [[:java:static_keyword | Στατικές μεταβλητές και μέθοδοι ]]| | ||