⊗ppOpIfII 74 of 107 menu

Dedenie od triedy a implementácia rozhrania v OOP v PHP

Trieda môže dediť od inej triedy a zároveň implementovať nejaké rozhranie. Pozrime sa na praktický príklad.

Povedzme, že chceme vytvoriť triedu Programmer, ktorá bude mať meno, plat a zoznam jazykov, ktoré programátor ovláda. Zatiaľ je náš popis triedy pomerne vágny: áno, trieda bude mať meno, plat, jazyky - ale aké metódy bude naša trieda obsahovať?

Poďme našu triedu opísať presnejšie pomocou rozhrania iProgrammer:

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

Povedzme, že sme prehľadali už implementované triedy a zistili sme, že už máme podobnú triedu Employee. Neimplementuje všetky metódy triedy Programmer, ale časť. Tu je kód už existujúcej triedy:

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

Je logické, aby naša nová trieda Programmer zdedila časť potrebných metód od triedy Employee (a zvyšok potom implementujeme priamo v novej triede):

<?php class Programmer extends Employee { } ?>

Zároveň vieme, že trieda Programmer by mala implementovať rozhranie iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Spojme teraz dedenie od triedy Employee a implementáciu rozhrania iProgrammer:

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

Výsledkom bude, že naša trieda Programmer zdedí od triedy Employee metódy __construct, getName a getSalary, zatiaľ čo metódy addLang a getLangs budeme musieť implementovať:

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

Rozhraniu iProgrammer je jedno, či sú metódy pôvodné alebo zdedené - dôležité je, aby boli všetky popísané metódy implementované.

Skopírujte kód mojej triedy Employee a kód rozhrania iProgrammer. Nekopírujte môj náčrt triedy Programmer - bez nahliadnutia do môjho kódu implementujte túto triedu samostatne.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť