java:this_operator

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Ο τελεστής 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 setWidth, int setHeight, Point o) { width = setWidth; height = setHeight; origin = o; } public Rectangle(int setWidth, int setHeight) { width = setWidth; height = setHeight; } .... } </code> ως εξής <code java> public class Rectangle { private int width; private int height; private Point origin; // the Rectangle class has one constructor public Rectangle(int setWidth, int setHeight, Point o) { this(setWidth, setHeight); origin = o; } public Rectangle(int setWidth, int setHeight) { width = setWidth; height = setHeight; } .... } </code> __Το παραπάνω, είναι αποδεκτό από τον compiler της Java__. Ο τελεστής **this** χρησιμοποιείται για να κληθεί από ένα κατασκευαστή ένας άλλος κατασκευαστής της ίδιας κλάσης. <WRAP important 80% center round> Η κλήση ενός κατασκευαστή μέσα από άλλο κατασκευαστή θα πρέπει να γίνει στην αρχή του σώματος του κατασκευατή. Το παρακάτω παράδειγμα βγάζει μήνυμα λάθους από τον compiler. <code java> public class Rectangle { private int width; private int height; private Point origin; // the Rectangle class has one constructor public Rectangle(int setWidth, int setHeight, Point o) { origin = o; this(setWidth, setHeight); } public Rectangle(int setWidth, int setHeight) { width = setWidth; height = setHeight; } .... } </code> </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> O τελεστής **this** δείχνει στο τρέχον αντικείμενο της εκάστοτε κλάσης, για λογαριασμό του οποίου εκτελείται. Με χρήση του τελεστή **this** μπορείτε να καλέσετε και μεθόδους της κλάσης από το τρέχον αντικείμενο, πράγμα που όμως δεν θα το δείτε στην πράξη, καθώς δεν υπάρχει ανάγκη για κάτι τέτοιο. </WRAP> |Προηγούμενο: [[:java:objects| Δημιουργώντας Αντικείμενα ]] | Επόμενο: [[:java:static_keyword | Στατικές μεταβλητές και μέθοδοι ]]|

java/this_operator.1453478798.txt.gz · Last modified: 2016/02/26 11:15 (external edit)