User Tools

Site Tools


java:this_operator

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
Previous revision
Next revision Both sides next revision
java:this_operator [2018/02/04 06:39]
gthanos
java:this_operator [2020/02/21 12:17]
gthanos
Line 1: Line 1:
 ======  Ο τελεστής this ====== ======  Ο τελεστής this ======
  
-===== Πρόσβαση σε πεδία και μεθόδους των αντικειμένων της κλάσης μέσω του τελεστή this =====+Μέσω του τελεστή **this** μπορούμε:  
 +  * να έχουμε πρόσβαση στα πεδία του τρέχοντος αντικειμένου όταν υπάρχουν και τοπικές μεταβλητές που έχουν το ίδιο όνομα με το αντικείμενο. 
 +  * κατά τη δημιουργία του αντικειμένου να καλέσουμε ένα κατασκευαστή μέσω ενός άλλου κατασκευαστή. 
 + 
 +===== Πρόσβαση σε πεδία και μεθόδους των αντικειμένων της κλάσης με χρήση του τελεστή this =====
  
 Ας ξαναγράψουμε το παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα, ως εξής Ας ξαναγράψουμε το παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα, ως εξής
Line 45: Line 49:
 </WRAP> </WRAP>
  
-===== Πρόσβαση στους κατασκευαστές της κλάσης μέσω του τελεστή this =====+===== Κλήση ενός κατασκευαστή μέσω άλλου κατασκευαστή με χρήση του τελεστή this =====
  
 Ας ξαναδούμε το παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα θέλοντας να επιχειρήσουμε να επαναχρησιμοποιήσουμε τμήματα κώδικα ενός κατασκευαστή από έναν άλλο κατασκευαστή.  Ας ξαναδούμε το παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα θέλοντας να επιχειρήσουμε να επαναχρησιμοποιήσουμε τμήματα κώδικα ενός κατασκευαστή από έναν άλλο κατασκευαστή. 
Line 93: Line 97:
 </code> </code>
  
-__Το παραπάνω, είναι αποδεκτό από τον compiler της Java__. Ο τελεστής **this** χρησιμοποιείται για να κληθεί από ένα κατασκευαστή ένας άλλος κατασκευαστής της ίδιας κλάσης.+<WRAP tip 80% center round> 
 +Ο τελεστής **this** χρησιμοποιείται για να κληθεί από ένα κατασκευαστή ένας άλλος κατασκευαστής της ίδιας κλάσης. 
 +</WRAP>
  
 <WRAP important 80% center round> <WRAP important 80% center round>
Line 125: Line 131:
  
  
-<WRAP tip 80% center round>+<WRAP info 80% center round>
 Συμπερασματικά, τελεστής **this** δείχνει στο τρέχον αντικείμενο της εκάστοτε κλάσης, για λογαριασμό του οποίου εκτελείται. Μπορείτε να τον χρησιμοποιείτε  Συμπερασματικά, τελεστής **this** δείχνει στο τρέχον αντικείμενο της εκάστοτε κλάσης, για λογαριασμό του οποίου εκτελείται. Μπορείτε να τον χρησιμοποιείτε 
   * για να διακρίνεται τα πεδία του τρέχοντος αντικειμένου σε σχέση με τοπικές μεταβλητές που έχουν το ίδιο όνομα με τα πεδία αυτά.    * για να διακρίνεται τα πεδία του τρέχοντος αντικειμένου σε σχέση με τοπικές μεταβλητές που έχουν το ίδιο όνομα με τα πεδία αυτά. 
   * να καλέσετε τον κατασκευαστή της κλάσης για το τρέχον αντικείμενο.   * να καλέσετε τον κατασκευαστή της κλάσης για το τρέχον αντικείμενο.
  
-Μπορείτε να δείτε την κλάση **Rectangle**, όπως διαμορφώνεται με χρήση του τελεστή **this** τόσο για την κλήση ενός κατασκευαστή της κλάσης από άλλο, όσο για την πρόσβαση στα πεδία της κλάσης όταν αυτά επισκιάζονται από τοπικές μεταβλητές ή παραμέτρους μεθόδων με το ίδιο όνομα {{:java:rectangle.java-this.tgz|εδώ}}. 
 </WRAP> </WRAP>
  
-|Προηγούμενο: [[:java:public_private_access_modifiers | Περιορισμός της πρόσβασης με τους προσδιοριστές public και private]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:static_keyword | Στατικές μεταβλητές και μέθοδοι ]]|+Παρακάτω, μπορείτε να δείτε την κλάση **Rectangle**, όπως διαμορφώνεται με χρήση του τελεστή **this** τόσο για την κλήση ενός κατασκευαστή της κλάσης από άλλο, όσο για την πρόσβαση στα πεδία της κλάσης όταν αυτά επισκιάζονται από τοπικές μεταβλητές ή παραμέτρους μεθόδων με το ίδιο όνομα. 
 + 
 +<code java Rectangle.java> 
 +public class Rectangle { 
 +     
 +  // the Rectangle class has 3 fields 
 +  private int width; 
 +  private int height; 
 +  private Point origin; 
 +     
 +  // the Rectangle class has two constructors 
 +  public Rectangle(int width, int height, Point origin) { 
 +    this.width = width; 
 +    this.height = height; 
 +    this.origin = origin; 
 +  } 
 +   
 +  public Rectangle(int width, int height, int xPos, int yPos) { 
 +    this(width, height, new Point(xPos, yPos)); 
 +  } 
 +     
 +  public void setWidth(int width ) { 
 +    this.width = width; 
 +  } 
 +   
 +  public int getWidth() { 
 +    return width; 
 +  } 
 +     
 +  public void setHeight(int height ) { 
 +    this.height = height; 
 +  } 
 +   
 +  public int getHeight() { 
 +    return height; 
 +  } 
 +     
 +  public void setOrigin(Point o) { 
 +    origin = o; 
 +  } 
 +   
 +  public Point getOrigin() { 
 +    return origin; 
 +  } 
 +   
 +  public int getArea() { 
 +       return width * height; 
 +  } 
 +    
 +  // Move rectangle origin by dx,dy 
 +  public void moveOrigin(int dx, int dy) { 
 +    origin.setX( origin.getX() + dx ); 
 +    origin.setY( origin.getY() + dy ); 
 +  } 
 +
 +</code> 
 + 
 +|Προηγούμενο: [[:java:arrays | Πίνακες]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:static_keyword | Στατικές μεταβλητές και μέθοδοι ]]|
  
java/this_operator.txt · Last modified: 2022/02/23 16:10 by gthanos