⊗ppOpIhCOM 29 of 107 menu

Wywołanie nadpisanej metody w OOP w PHP

Przy nadpisywaniu klasa potomna traci dostęp do nadpisanej metody rodzica. Jednakże, uzyskanie do niego dostępu jest nadal możliwe. Robi się to za pomocą słowa kluczowego parent, które wskazuje na klasę rodzica.

Spójrzmy na przykład, kiedy może nam być potrzebny dostęp do metody rodzica. Załóżmy, że mamy następującą klasę-rodzica:

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

Załóżmy, że w klasie-potomnej nadpisaliśmy metodę rodzica:

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

Można zauważyć, że w nadpisanej metodzie przy spełnieniu warunku faktycznie wykonywany jest kod metody rodzica. Powstaje niepotywne powielanie kodu.

Można się go pozbyć, jeśli wywołać metodę rodzica. Zróbmy to:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { parent::setName($name); // metoda rodzica } else { echo 'student name error'; } } } ?>

Dany jest następujący kod:

<?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'; } } } ?>

W klasie Employee popraw uprość setter wieku, wykorzystując oryginalną metodę rodzica.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć