This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
|
java:super_operator [2021/03/05 19:00] gthanos |
java:super_operator [2022/03/11 05:25] gthanos [Πρόσβαση στα πεδία της γονικής κλάσης] |
||
|---|---|---|---|
| Line 48: | Line 48: | ||
| Στις περιπτώσεις που μία κλάση είναι απόγονος άλλης κλάσης η διαδικασία αρχικοποίησης έχει ως εξής. Αρχικά αρχικοποιείται το τμήμα της κλάσης που αφορά την γονική κλάση καλώντας τον κατασκευαστή αυτής μέσω του τελεστή **super** και στη συνέχεια αρχικοποιείται η απόγονος κλάση. Εάν κατά την κλήση **super** η γονική κλάση έχει με τη σειρά της μία άλλη πρόγονο κλάση, οφείλει να καλέσει τον κατασκευαστή αυτής. Η διαδικασία επαναλαμβάνεται μέχρι να κληθεί ο κατασκευαστής της κλάσης [[https:// | Στις περιπτώσεις που μία κλάση είναι απόγονος άλλης κλάσης η διαδικασία αρχικοποίησης έχει ως εξής. Αρχικά αρχικοποιείται το τμήμα της κλάσης που αφορά την γονική κλάση καλώντας τον κατασκευαστή αυτής μέσω του τελεστή **super** και στη συνέχεια αρχικοποιείται η απόγονος κλάση. Εάν κατά την κλήση **super** η γονική κλάση έχει με τη σειρά της μία άλλη πρόγονο κλάση, οφείλει να καλέσει τον κατασκευαστή αυτής. Η διαδικασία επαναλαμβάνεται μέχρι να κληθεί ο κατασκευαστής της κλάσης [[https:// | ||
| - | |||
| - | ===== Πρόσβαση στα πεδία και τις μεθόδους της γονικής κλάσης μέσω του τελεστή super ===== | ||
| Εάν δεν υπάρχει κλήση του κατασκευαστή της γονικής κλάσης μέσω του τελεστή **super** στον κατασκευαστή της απογόνου κλάσης, | Εάν δεν υπάρχει κλήση του κατασκευαστή της γονικής κλάσης μέσω του τελεστή **super** στον κατασκευαστή της απογόνου κλάσης, | ||
| Line 86: | Line 84: | ||
| ===== Πρόσβαση σε πεδία και μεθόδους των αντικειμένων της γονικής κλάσης μέσω του τελεστή super ===== | ===== Πρόσβαση σε πεδία και μεθόδους των αντικειμένων της γονικής κλάσης μέσω του τελεστή super ===== | ||
| - | Ξαναγράφουμε τις κλάσεις '' | + | ==== Πρόσβαση στις μεθόδους της γονικής κλάσης ==== |
| + | |||
| + | Ξαναγράφουμε τις κλάσεις '' | ||
| <code java BasicRectangle.java> | <code java BasicRectangle.java> | ||
| Line 124: | Line 124: | ||
| } | } | ||
| | | ||
| - | public int getPerimeter() { | + | public int area() { |
| - | return | + | return |
| } | } | ||
| } | } | ||
| </ | </ | ||
| - | Παρατηρήστε ότι η μέθοδος toString για την κλάση Rectangle χρησιμοποιεί τη μέθοδο toString της κλάσης Point και της γονικής της κλάσης BasicRectangle (βλέπε '' | + | Παρατηρήστε ότι η μέθοδος toString για την κλάση Rectangle χρησιμοποιεί τη μέθοδο toString της κλάσης |
| - | Επιπλέον, | + | ==== Πρόσβαση στα πεδία της γονικής κλάσης ==== |
| - | < | + | |
| + | Επιπλέον, | ||
| + | < | ||
| + | public int getPerimeter() { | ||
| + | return width * height; | ||
| + | } | ||
| + | </ | ||
| + | <code java> | ||
| public int getPerimeter() { | public int getPerimeter() { | ||
| - | return | + | return this.width |
| } | } | ||
| </ | </ | ||
| - | < | + | < |
| public int getPerimeter() { | public int getPerimeter() { | ||
| - | return | + | return super.width |
| } | } | ||
| </ | </ | ||
| - | Ο λόγος που μπορούμε να γράψουμε τη συνάρτηση με τους δύο παραπάνω τρόπους είναι ότι το πεδίο width επειδή | + | Ο λόγος που μπορούμε να γράψουμε τη συνάρτηση με τους δύο παραπάνω τρόπους είναι ότι το πεδίο width, που κληρονομείται από τη γονική κλάση, ανήκει τόσο στην τρέχουσα κλάση |
| Συμπερασματικά, | Συμπερασματικά, | ||