⊗ppOpIhCOM 29 of 107 menu

Κλήση υπερκαλυμμένης μεθόδου στην ΑΑΠ στην PHP

Κατά την υπερκάλυψη, ο απόγονος χάνει την πρόσβαση στην υπερκαλυμμένη μέθοδο του γονέα. Ωστόσο, είναι ακόμα δυνατόν να αποκτήσει πρόσβαση σε αυτήν. Αυτό γίνεται χρησιμοποιώντας τη λέξη-κλειδί parent, που δείχνει towards the parent class.

Ας δούμε ένα παράδειγμα όπου μπορεί να χρειαστεί πρόσβαση στη μέθοδο του γονέα. Ας υποθέσουμε ότι έχουμε την ακόλουθη κλάση-γονέα:

<?php class User { private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } ?>

Ας υποθέσουμε ότι στην κλάση-απόγονο υπερκαλύψαμε τη μέθοδο του γονέα:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { $this->name = $name; } else { echo 'student name error'; } } } ?>

Μπορεί να παρατηρηθεί ότι στην υπερκαλυμμένη μέθοδο, όταν ικανοποιείται η συνθήκη, πρακτικά εκτελείται ο κώδικας της μεθόδου του γονέα. Αποτελεί λοιπόν επαναλαμβανόμενο κώδικα.

Μπορούμε να τον αφαιρέσουμε, εάν καλέσουμε τη μέθοδο του γονέα. Ας το κάνουμε:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { parent::setName($name); // μέθοδος γονέα } else { echo 'student name error'; } } } ?>

Δίνεται ο ακόλουθος κώδικας:

<?php class User { private $age; public function setAge($age) { if ($age >= 0) { $this->age = $age; } else { echo 'need age more 0'; } } } class Employee extends User { public function setAge($age) { if ($age <= 120) { if ($age >= 0) { $this->age = $age; } else { echo 'need age more 0'; } } else { echo 'need age less 120'; } } } ?>

Στην κλάση Employee διορθώστε απλοποιήστε τον setter ηλικίας, χρησιμοποιώντας την αρχική μέθοδο του γονέα.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη