⊗ppOpIfII 74 of 107 menu

Osztály öröklődés és interfész implementálás az OOP-ban PHP-ben

Egy osztály örökölhet egy másik osztálytól és közben implementálhat egy interfészt. Nézzük ezt egy gyakorlati példán keresztül.

Tegyük fel, hogy szeretnénk készíteni egy Programmer osztályt, aminek neve, fizetése és egy listája nyelvekről lesz, amelyeket a programozó ismer. Egyelőre az osztály leírása nagyon homályos: igen, az osztálynak lesz neve, fizetése, nyelvei - de milyen metódusok lesznek az osztályunkban?

Írjuk le pontosabban az osztályunkat az iProgrammer interfész segítségével:

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

Tegyük fel, hogy átnéztük a már implementált osztályainkat és kiderül, hogy már van egy hasonló Employee osztályunk. Az nem valósítja meg az összes Programmer osztály metódusát, de egy részét. Itt a kód a már létező osztályunkból:

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

Logikus ebben az esetben azt tenni, hogy az új Programmer osztályunk örökölje a szükséges metódusok egy részét a Employee osztálytól (a maradékot pedig aztán maga az új osztály implementálja):

<?php class Programmer extends Employee { } ?>

Közben tudjuk, hogy a Pogrammer osztálynak implementálnia kell az iProgrammer interfészt:

<?php class Programmer implements iProgrammer { } ?>

Kombináljuk az öröklődést a Employee osztálytól és az iProgrammer interfész implementálását:

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

Így a Pogrammer osztályunk örökölni fogja a Employee osztálytól a __construct, getName és getSalary metódusokat, a addLang és getLangs metódusokat pedig nekünk kell implementálnunk:

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

Az iProgrammer interfészt nem érdekli, hogy az osztály metódusai sajátak vagy örököltek - a lényeg, hogy minden leírt metódus legyen implementálva.

Másolja le a Employee osztályom kódját és az iProgrammer interfész kódját. Ne másolja a Programmer osztályom vázlatát - anélkül, hogy belenézne a kódomba, valósítsa meg ezt az osztályt önállóan.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás