java:this_operator

This is an old revision of the document!


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

====== Oι τελεστές this και super ====== ===== Ο τελεστής 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; } ... } </code> Εναλλακτικά, το παραπάνω μπορεί να γραφεί ως εξής. <code java> public class Rectangle { private int width, height; private Point origin; public Rectangle(Point origin, int width, int height) { this.origin = origin; this.width = width; this.height = height; } ... } </code> Στον παραπάνω κώδικα η τοπική μεταβλητή ''origin'' που δίνεται ως τυπική παράμετρος στον κατασκευαστή, συμπίπτει με την μεταβλητή της κλάσης. Σε αυτή την περίπτωση η τοπική μεταβλητή "κρύβει" (shadows) την μεταβλητή του αντικειμένου της κλάσης. Προκειμένου να έχουμε πρόσβαση στην μεταβλητή του αντικειμένου της κλάσης θα πρέπει να χρησιμοποιήσουμε τον τελεστή **this**. Συμπερασματικά, ο τελεστής **this** δείχνει στο τρέχον αντικείμενο και χρησιμοποιείται για να προσπελαστούν δεδομένα ή μεταβλητές που ανήκουν σε αντικείμενα της κλάσης. ===== Ο τελεστής super ===== Σε αναλογία με τον τελεστή **this**, ο τελεστής **super** δείχνει στο αντικείμενο της γονικής κλάσης. Προϋπόθεση για την χρήση του τελεστή **super** είναι να υφίσταται γονική κλάση μέσω της διαδικασίας της κληρονομικότητας. Λαμβάνοντας κώδικα από το προηγούμενο παράδειγμα του ποδηλάτου έχουμε τα εξής: <code java> public class MountainBike extends Bicycle { // the MountainBike subclass has // one field public int seatHeight; // the MountainBike subclass has // one constructor public MountainBike(int startHeight, int startCadence, int startSpeed, int startGear) { super(startCadence, startSpeed, startGear); seatHeight = startHeight; } // the MountainBike subclass has // one method public void setHeight(int newValue) { seatHeight = newValue; } } </code> H χρήση του τελεστή super χρησιμοποιείται για να προσπελάσει τον κατασκευαστή της γονικής κλάσης και να αρχικοποιήσει τις μεταβλητές που ανήκουν στην κλάση αυτή.

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