⊗ppOpIfII 74 of 107 menu

Moștenirea de la o clasă și implementarea unei interfețe în OOP în PHP

O clasă poate moșteni de la o altă clasă și în același timp poate implementa o interfață. Să analizăm un exemplu practic.

Să presupunem că vrem să creăm o clasă Programmer, care să aibă un nume, un salariu și o listă de limbaje, pe care le cunoaște programatorul. Descrierea clasei noastre este încă foarte vagă: da, în clasă vor fi numele, salariul, limbajele - dar ce metode vor fi în clasa noastră?

Să descriem clasa noastră mai precis cu ajutorul interfeței iProgrammer:

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

Să presupunem că am căutat printre clasele deja implementate de noi și, se pare, avem deja o clasă similară Employee. Ea nu implementează toate metodele clasei Programmer, dar o parte. Iată codul clasei noastre deja existente:

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

Este logic în cazul nostru să facem astfel încât noua noastră clasă Programmer să moștenească o parte din metodele necesare de la clasa Employee (iar o parte o vom implementa ulterior în noua clasă):

<?php class Programmer extends Employee { } ?>

În același timp, știm că clasa Pogrammer trebuie să implementeze interfața iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Să combinăm moștenirea de la clasa Employee și implementarea interfeței iProgrammer:

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

Se va dovedi că clasa noastră Pogrammer va moșteni de la clasa Employee metodele __construct, getName și getSalary, iar metodele addLang și getLangs va trebui să le implementăm noi:

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

Interfeței iProgrammer nu îi pasă, metodele sunt native pentru clasă sau moștenite - principalul este ca toate metodele descrise să fie implementate.

Copiați codul clasei mele Employee și codul interfeței iProgrammer. Nu copiați schița mea a clasei Programmer - fără să vă uitați la codul meu, implementați această clasă independent.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge