⊗ppOpIfII 74 of 107 menu

Наслеђење класе и имплементација интерфејса у ООП у PHP

Класа може наследити од друге класе и при томе имплементирати неки интерфејс. Размотрићемо на практичном примеру.

Претпоставимо да желимо да направимо класу Programmer, која ће имати име, плату и списак језика које программер познаје. Засад је наш опис класе прилично нејасан: да, класа ће имати име, плату, језике - али које методе ће имати наша класа?

Хајде да прецизније опишемо нашу класу уз помоћ интерфејса iProgrammer:

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

Претпоставимо да смо се позабавили већ имплементираним класама и, испоставља се, већ имамо сличну класу Employee. Она не имплементира све методе класе Programmer, али део. Ево кода већ постојеће класе коју имамо:

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

Логично је у нашем случају да учинимо да наша нова класа Programmer наследи део потребних метода од класе Employee (а део ћемо касније имплементирати већ у самој новој класи):

<?php class Programmer extends Employee { } ?>

При томе нам је познато да класа Pogrammer треба да имплементира интерфејс iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Хајде да комбинујемо наслеђење од класе Employee и имплементацију интерфејса iProgrammer:

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

Испоставиће се да ће наша класа Pogrammer наследити од класе Employee методе __construct, getName и getSalary, а методе addLang и getLangs мораћемо сами да имплементирамо:

<?php class Programmer extends Employee implements iProgrammer { public function addLang($lang) { // имплементација } public function getLangs() { // имплементација } } ?>

Интерфејсу iProgrammer је свеједно, домаће методе има класа или наслеђене - главно је да сви описани методи буду имплементирани.

Копирајте код моје класе Employee и код интерфејса iProgrammer. Немојте копирати мој шаблон класе Programmer - без поткрадања у мој код имплементирајте ову класу самостално.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј