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 [2017/01/26 10:42] gthanos [Πρόσβαση στους κατασκευαστές της κλάσης μέσω του τελεστή this] |
java:this_operator [2020/02/21 12:17] gthanos |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== | ====== | ||
| - | ===== Πρόσβαση σε πεδία και μεθόδους των αντικειμένων της κλάσης μέσω του τελεστή this ===== | + | Μέσω του τελεστή **this** μπορούμε: |
| + | * να έχουμε πρόσβαση στα πεδία του τρέχοντος αντικειμένου όταν υπάρχουν και τοπικές μεταβλητές που έχουν το ίδιο όνομα με το αντικείμενο. | ||
| + | * κατά τη δημιουργία του αντικειμένου να καλέσουμε ένα κατασκευαστή μέσω ενός άλλου κατασκευαστή. | ||
| + | |||
| + | ===== Πρόσβαση σε πεδία και μεθόδους των αντικειμένων της κλάσης με χρήση του τελεστή this ===== | ||
| Ας ξαναγράψουμε το παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα, | Ας ξαναγράψουμε το παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα, | ||
| Line 41: | Line 45: | ||
| </ | </ | ||
| - | __O τελεστής | + | <WRAP tip 80% center round> |
| + | __O τελεστής this υποδεικνύει το τρέχον αντικείμενο__. Με τον παραπάνω τρόπο μπορούμε να διακρίνουμε μία μεταβλητή του τρέχοντος αντικειμένου (της μορφής **this.**// | ||
| + | </ | ||
| - | ===== Πρόσβαση στους κατασκευαστές της κλάσης μέσω του τελεστή this ===== | + | ===== Κλήση ενός κατασκευαστή μέσω άλλου κατασκευαστή με χρήση του τελεστή this ===== |
| Ας ξαναδούμε το παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα θέλοντας να επιχειρήσουμε να επαναχρησιμοποιήσουμε τμήματα κώδικα ενός κατασκευαστή από έναν άλλο κατασκευαστή. | Ας ξαναδούμε το παρακάτω τμήμα κώδικα το οποίο συναντήσαμε προηγούμενα θέλοντας να επιχειρήσουμε να επαναχρησιμοποιήσουμε τμήματα κώδικα ενός κατασκευαστή από έναν άλλο κατασκευαστή. | ||
| Line 91: | Line 97: | ||
| </ | </ | ||
| - | __Το παραπάνω, | + | <WRAP tip 80% center round> |
| + | Ο τελεστής **this** χρησιμοποιείται για να κληθεί από ένα κατασκευαστή ένας άλλος κατασκευαστής της ίδιας κλάσης. | ||
| + | </ | ||
| <WRAP important 80% center round> | <WRAP important 80% center round> | ||
| Line 104: | Line 112: | ||
| | | ||
| public Rectangle(int width, int height, Point origin) { | public Rectangle(int width, int height, Point origin) { | ||
| - | this.origin = origin; | + | this.origin = origin; |
| - | this(width, height); | + | /* η κλήση ενός κατασκευαστή μέσα από άλλο |
| + | * κατασκευαστή, | ||
| + | * παράγει μήνυμα λάθους από τον compiler. | ||
| + | | ||
| + | this(width, height); | ||
| | | ||
| } | } | ||
| Line 119: | Line 131: | ||
| - | < | + | < |
| - | O τελεστής **this** δείχνει στο τρέχον αντικείμενο της εκάστοτε κλάσης, | + | Συμπερασματικά, |
| + | * για να διακρίνεται τα πεδία του | ||
| + | * να καλέσετε | ||
| - | Μπορείτε να δείτε την κλάση **Rectangle**, | ||
| </ | </ | ||
| - | |Προηγούμενο: [[: | + | Παρακάτω, |
| + | |||
| + | <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() { | ||
| + | | ||
| + | } | ||
| + | |||
| + | // Move rectangle origin by dx,dy | ||
| + | public void moveOrigin(int dx, int dy) { | ||
| + | origin.setX( origin.getX() + dx ); | ||
| + | origin.setY( origin.getY() + dy ); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |Προηγούμενο: [[: | ||