⊗ppOpIfII 74 of 107 menu

Klasės paveldėjimas ir interfeiso realizavimas OOP PHP

Klasė gali paveldėti iš kitos klasės ir tuo pačiu metu realizuoti kokį nors interfeisą. Panagrinėkime praktiniu pavyzdžiu.

Tarkime, norime sukurti klasę Programmer, kuri turės vardą, atlyginimą ir kalbų sąrašą, kurias programuotojas moka. Kol kas mūsų klasės aprašymas yra gana miglotas: taip, klasėje bus vardas, atlyginimas, kalbos - bet kokie metodai bus mūsų klasėje?

Leiskite tiksliau apibūdinti mūsų klasę naudodami interfeisą iProgrammer:

<?php interface iProgrammer { public function __construct($name, $salary); public function getName(); public function getSalary(); public function getLangs(); public function addLang($lang); } ?>

Tarkime, mes pasidomėjome jau mumis realizuotomis klasėmis ir, pasirodo, mes jau turime panašią klasę Employee. Ji realizuoja ne visus klasės Programmer metodus, bet dalį. Štai jau mūsų egzistuojančios klasės kodas:

<?php class Employee { private $name; private $salary; public function __construct($name, $salary) { $this->name = $name; $this->salary = $salary; } public function getName() { return $this->name; } public function getSalary() { return $this->salary; } } ?>

Logiška mūsų atveju padaryti taip, kad mūsų nauja klasė Programmer paveldėtų dalinį reikalingų sau metodų iš klasės Employee (o dalį mes vėliau realizuosime jau pačioje naujoje klasėje):

<?php class Programmer extends Employee { } ?>

Tuomet mums žinoma, kad klasė Pogrammer turi realizuoti interfeisą iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Sujungkime paveldėjimą iš klasės Employee ir interfeiso realizavimą iProgrammer:

<?php class Programmer extends Employee implements iProgrammer { } ?>

Taip mūsų klasė Pogrammer paveldės iš klasės Employee metodus __construct, getName ir getSalary, o metodus addLang ir getLangs mums teks realizuoti:

<?php class Programmer extends Employee implements iProgrammer { public function addLang($lang) { // realizacija } public function getLangs() { // realizacija } } ?>

Interfeisui iProgrammer vis vien, gimdieji metodai klasėje ar paveldėti - svarbiausia, kad visi aprašyti metodai būtų realizuoti.

Nukopijuokite mano klasės Employee kodą ir interfeiso iProgrammer kodą. Nekopijuokite mano klasės Programmer ruošinio - nežiūrėdami į mano kodą realizuokite šią klasę savarankiškai.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti