java:super_operator
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
java:super_operator [2021/03/05 18:12] – [Πρόσβαση στους κατασκευαστές της γονικής κλάσης μέσω του τελεστή super] gthanos | java:super_operator [2025/03/21 07:05] (current) – [Πρόσβαση στις μεθόδους της γονικής κλάσης] gthanos | ||
---|---|---|---|
Line 18: | Line 18: | ||
} | } | ||
| | ||
- | public String toString() { | ||
- | return " | ||
- | } | ||
} | } | ||
</ | </ | ||
Line 41: | Line 38: | ||
} | } | ||
| | ||
- | public String toString() { | ||
- | return origin.toString() + " " + super.toString(); | ||
- | } | ||
} | } | ||
</ | </ | ||
- | Ο τελεστής | + | Ο τελεστής **super** χρησιμοποιείται στην υποκλάση για να προσπελάσει τον κατασκευαστή της γονικής κλάσης και να αρχικοποιήσει με αυτό τον τρόπο τις μεταβλητές που ανήκουν στο γονικό κομμάτι της κλάσης. |
- | * στον κατασκευαστή την υποκλάσης Rectangle. | + | |
- | * μέσα στη συνάρτηση '' | + | |
- | + | ||
- | Στη συνέχεια θα εξηγήσουμε το ρόλο του τελεστή σε κάθε μία περίπτωση. | + | |
- | + | ||
- | ==== Χρήστη του τελεστη super στον κατασκευαστή της υποκλάσης ==== | + | |
- | + | ||
- | H χρήση του τελεστή | + | |
- | Η κλήση super πρέπει να βρίσκεται ως πρώτη εντολή σε κάθε κατασκευαστή | + | Η κλήση |
==== Σειρά αρχικοποίησης μεταξύ της γονικής και και της απογόνου κλάσης ==== | ==== Σειρά αρχικοποίησης μεταξύ της γονικής και και της απογόνου κλάσης ==== | ||
- | Στις περιπτώσεις που μία κλάση είναι απόγονος άλλης κλάσης η διαδικασία αρχικοποίησης έχει ως εξής. Αρχικά αρχικοποιείται το τμήμα της κλάσης που αφορά την γονική κλάση καλώντας των κατασκευαστή αυτής μέσω του τελεστή **super** και στη συνέχεια αρχικοποιείται η απόγονος κλάση. | + | Στις περιπτώσεις που μία κλάση είναι απόγονος άλλης κλάσης η διαδικασία αρχικοποίησης έχει ως εξής. Αρχικά αρχικοποιείται το τμήμα της κλάσης που αφορά την γονική κλάση καλώντας τον κατασκευαστή αυτής μέσω του τελεστή **super** και στη συνέχεια αρχικοποιείται η απόγονος κλάση. Εάν κατά την κλήση **super** η γονική κλάση έχει με τη σειρά της μία άλλη πρόγονο κλάση, οφείλει να καλέσει τον κατασκευαστή αυτής. Η διαδικασία επαναλαμβάνεται μέχρι να κληθεί ο κατασκευαστής της κλάσης [[https:// |
Εάν δεν υπάρχει κλήση του κατασκευαστή της γονικής κλάσης μέσω του τελεστή **super** στον κατασκευαστή της απογόνου κλάσης, | Εάν δεν υπάρχει κλήση του κατασκευαστή της γονικής κλάσης μέσω του τελεστή **super** στον κατασκευαστή της απογόνου κλάσης, | ||
Line 98: | Line 84: | ||
===== Πρόσβαση σε πεδία και μεθόδους των αντικειμένων της γονικής κλάσης μέσω του τελεστή super ===== | ===== Πρόσβαση σε πεδία και μεθόδους των αντικειμένων της γονικής κλάσης μέσω του τελεστή super ===== | ||
- | Ξαναγράφουμε τις κλάσεις '' | + | ==== Πρόσβαση στις μεθόδους της γονικής κλάσης ==== |
+ | |||
+ | Ξαναγράφουμε τις κλάσεις '' | ||
<code java BasicRectangle.java> | <code java BasicRectangle.java> | ||
Line 106: | Line 94: | ||
int height; | int height; | ||
- | public | + | public |
width = initWidth; | width = initWidth; | ||
height = initHeight; | height = initHeight; | ||
Line 136: | Line 124: | ||
} | } | ||
| | ||
- | public int getPerimeter() { | + | public int area() { |
- | return | + | return |
} | } | ||
} | } | ||
</ | </ | ||
- | Παρατηρήστε ότι η μέθοδος toString για την κλάση Rectangle χρησιμοποιεί τη μέθοδο toString της κλάσης Point και της γονικής της κλάσης BasicRectangle (βλέπε '' | + | Παρατηρήστε ότι η μέθοδος toString για την κλάση Rectangle χρησιμοποιεί τη μέθοδο toString της κλάσης |
- | Επιπλέον, | + | ==== Πρόσβαση στα πεδία της γονικής κλάσης ==== |
- | < | + | |
- | public int getPerimeter() { | + | Επιπλέον, |
- | return | + | < |
+ | public int area() { | ||
+ | return | ||
+ | } | ||
+ | </ | ||
+ | <code java> | ||
+ | public int area() { | ||
+ | return | ||
} | } | ||
</ | </ | ||
- | < | + | < |
- | public int getPerimeter() { | + | public int area() { |
- | return | + | return super.width |
} | } | ||
</ | </ | ||
- | Ο λόγος που μπορούμε να γράψουμε τη συνάρτηση με τους δύο παραπάνω τρόπους είναι ότι το πεδίο width επειδή | + | Ο λόγος που μπορούμε να γράψουμε τη συνάρτηση με τους δύο παραπάνω τρόπους είναι ότι το πεδίο width, που κληρονομείται από τη γονική κλάση, ανήκει τόσο στην τρέχουσα κλάση |
Συμπερασματικά, | Συμπερασματικά, |
java/super_operator.1614967953.txt.gz · Last modified: 2021/03/05 18:12 (external edit)