java:this_operator

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
java:this_operator [2015/01/21 17:44]
gthanos created
java:this_operator [2015/02/13 14:18]
gthanos [Πρόσβαση σε πεδία και μεθόδους των αντικειμένων της κλάσης μέσω του τελεστή this]
Line 1: Line 1:
-======  ​Oι τελεστές this και super ======+======  ​Ο τελεστής this ======
  
-===== Ο τελεστής this =====+===== Πρόσβαση στους κατασκευαστές της κλάσης μέσω του ​τελεστή this =====
  
-Ας υποθέσουμε τον παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα+Ας ξαναγράψουμε το παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα 
 + 
 +<code java> 
 +public class Rectangle { 
 +   ​private int width, height; 
 +   ​private Point origin; 
 +    
 +   ​public Rectangle(Point p, int w, int h) { 
 +       ​origin = p; 
 +       width = w; 
 +       ​height = h; 
 +   } 
 +    
 +   ​public Rectangle(int x, int y) { 
 +       width = w; 
 +       ​height = h; 
 +   } 
 +   ​.... 
 +
 +</​code>​ 
 + 
 +ως εξής 
 + 
 +<code java> 
 +public class Rectangle { 
 +   ​private int width, height; 
 +   ​private Point origin; 
 +    
 +   ​public Rectangle(Point p, int w, int h) { 
 +       ​origin = p; 
 +       ​this(w,​h) 
 +   } 
 +    
 +   ​public Rectangle(int w, int h) { 
 +       width = w; 
 +       ​height = h; 
 +   } 
 +   ​.... 
 +
 +</​code>​ 
 + 
 +Ο τελεστής **this** δείχνει στο τρέχον αντικείμενο και χρησιμοποιείται για να προσπελαστεί ένας άλλος κατασκευαστής της ίδιας κλάσης. 
 + 
 +===== Πρόσβαση σε πεδία και ​μεθόδους των αντικειμένων της κλάσης μέσω ​του τελεστή this ===== 
 + 
 +Ας ξαναγράψουμε το παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα:
  
 <code java> <code java>
Line 28: Line 73:
    
    ​public Rectangle(Point origin, int width, int height) {    ​public Rectangle(Point origin, int width, int height) {
-       origin = this.origin;​ +       this.origin = origin; 
-       width = this.width;​ +       this.width = width; 
-       height = this.height;​+       this.height = height;
    }    }
    ...    ...
Line 36: Line 81:
 </​code>​ </​code>​
  
-===== Ο τελεστής ​super =====+Στον παραπάνω κώδικα η τοπική μεταβλητή ''​origin''​ που δίνεται ως τυπική παράμετρος στον κατασκευαστή, συμπίπτει με την μεταβλητή της κλάσης. Σε αυτή την περίπτωση η τοπική μεταβλητή "​κρύβει"​ (shadows) την μεταβλητή του αντικειμένου της κλάσης. Προκειμένου να έχουμε πρόσβαση στην μεταβλητή του αντικειμένου της κλάσης θα πρέπει να χρησιμοποιήσουμε τον τελεστή **this**.  
 + 
 +Συμπερασματικά,​ ο τελεστής **this** δείχνει στο τρέχον αντικείμενο και χρησιμοποιείται για να προσπελαστούν δεδομένα ή μεταβλητές που ανήκουν σε αντικείμενα της κλάσης. 
 + 
 +<WRAP tip> 
 +O τελεστής **this** δείχνει στο τρέχον αντικείμενο της εκάστοτε κλάσης,​ για λογαριασμό του οποίου εκτελείται. 
 +</​WRAP>​
  
 +|Προηγούμενο:​ [[:​java:​objects| Δημιουργώντας Αντικείμενα ]] | Επόμενο:​ [[:​java:​static_keyword | Στατικές μεταβλητές και μέθοδοι ]]|
  
java/this_operator.txt · Last modified: 2017/02/16 11:24 by gthanos