⊗ppOpIfII 74 of 107 menu

Mantojums no klases un interfeisa implementācija OOP PHP

Klase var mantot no citas klases un tajā pašā laikā implementēt kādu interfeisu. Apskatīsim praktiskā piemērā.

Pieņemsim, ka mēs vēlamies izveidot klasi Programmer, kurai būs vārds, alga un saraksts ar valodām, ko programmētājs prot. Pagaidām mūsu klases apraksts ir diezgan neskaidrs: jā, klasē būs vārds, alga, valodas - bet kādas metodes būs mūsu klasē?

Precīzāk aprakstīsim mūsu klasi ar interfeisa iProgrammer palīdzību:

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

Pieņemsim, ka mēs iedziļinājāmies jau implementētajās klasēs un, izrādās, mums jau ir līdzīga klase Employee. Tā implementē ne visas klases Programmer metodes, bet daļu. Lūk, jau mums esošās klases kods:

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

Loģiski mūsu gadījumā būtu darīt tā, lai mūsu jaunā klase Programmer mantotu daļu nepieciešamo sev metožu no klases Employee (un daļu mēs pēcāk implementēsim jau pašā jaunajā klasē):

<?php class Programmer extends Employee { } ?>

Turklāt mums ir zināms, ka klasei Pogrammer jāimplementē interfeiss iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Apvienosim mantojumu no klases Employee un interfeisa iProgrammer implementāciju:

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

Izrādīsies, ka mūsu klase Pogrammer mantos no klases Employee metodes __construct, getName un getSalary, bet metodes addLang un getLangs mums nāksies implementēt:

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

Interfeisam iProgrammer ir vienalga, vai metodes ir klases pašas vai mantotas - galvenais, lai visas aprakstītās metodes būtu implementētas.

Nokopējiet mana klases Employee kodu un interfeisa iProgrammer kodu. Nekopējiet manu klases Programmer sagatavi - iespējami neieskatoties manā kodā, implementējiet šo klasi patstāvīgi.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt