⊗ppOpIfII 74 of 107 menu

Dedičnost razreda in implementacija vmesnika v OOP v PHP

Razred lahko podeduje od drugega razreda in hkrati implementira nek vmesnik. Oglejmo si praktični primer.

Recimo, da želimo narediti razred Programmer, ki bo imel ime, plačo in seznam jezikov, ki jih programer pozna. Za zdaj je naš opis razreda precej nejasen: da, v razredu bo ime, plača, jeziki - toda katere metode bodo v našem razredu?

Opišimo naš razred natančneje z uporabo vmesnika iProgrammer:

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

Recimo, da smo preučili že implementirane razrede in ugotovili, da imamo že podoben razred Employee. Ne implementira vseh metod razreda Programmer, ampak le del. Tu je koda že obstoječega razreda:

<?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čno je v našem primeru narediti tako, da naš novi razred Programmer podeduje del potrebnih metod od razreda Employee (ostale bomo implementirali kasneje v novem razredu):

<?php class Programmer extends Employee { } ?>

Ob tem vemo, da mora razred Programmer implementirati vmesnik iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Zdaj združimo dedovanje od razreda Employee in implementacijo vmesnika iProgrammer:

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

Izkazalo se bo, da bo naš razred Programmer podedoval od razreda Employee metode __construct, getName in getSalary, metode addLang in getLangs pa bomo morali implementirati sami:

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

Vmesniku iProgrammer je vseeno, ali so metode native v razredu ali podedovane - glavno je, da so vse opisane metode implementirane.

Kopirajte kodo mojega razreda Employee in kodo vmesnika iProgrammer. Ne kopirajte moje predloge razreda Programmer - ne gledaje v mojo kodo implementirajte ta razred samostojno.

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
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni