⊗ppOpIfII 74 of 107 menu

Dědičnost třídy a implementace rozhraní v OOP v PHP

Třída může dědit od jiné třídy a zároveň implementovat nějaké rozhraní. Podívejme se na praktický příklad.

Řekněme, že chceme vytvořit třídu Programmer, která bude mít jméno, plat a seznam jazyků, které programátor ovládá. Zatím je náš popis třídy velmi vágní: ano, třída bude mít jméno, plat, jazyky - ale jaké metody bude naše třída mít?

Pojďme naši třídu popsat přesněji pomocí rozhraní iProgrammer:

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

Řekněme, že jsme prohledali naše již implementované třídy a ukázalo se, že už máme podobnou třídu Employee. Neimplementuje všechny metody třídy Programmer, ale část. Zde je kód naší již existující třídy:

<?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é v našem případě udělat to, aby naše nová třída Programmer zdědila část potřebných metod od třídy Employee (a část pak implementujeme už v samotné nové třídě):

<?php class Programmer extends Employee { } ?>

Zároveň víme, že třída Pogrammer by měla implementovat rozhraní iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Pojďme zkombinovat dědičnost od třídy Employee a implementaci rozhraní iProgrammer:

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

Výsledkem bude, že naše třída Pogrammer zdědí od třídy Employee metody __construct, getName a getSalary, zatímco metody addLang a getLangs budeme muset implementovat:

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

Rozhraní iProgrammer je jedno, zda jsou metody původní nebo zděděné - hlavní je, aby všechny popsané metody byly implementovány.

Zkopírujte kód mé třídy Employee a kód rozhraní iProgrammer. Nekopírujte mou přípravku třídy Programmer - bez nahlížení do mého kódu implementujte tuto třídu samostatně.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout