⊗ppOpIfII 74 of 107 menu

Klassipärimine ja liidese rakendamine OOP-s PHP-s

Klass võib pärida teisest klassist ja samal ajal rakendada mõnda liidest. Vaatame praktilisel näitel.

Oletame, et tahame teha klassi Programmer, millel on nimi, palk ja programmeerija poolt tuntud keelte loend. Meie klassi kirjeldus on praegu üsna ebamäärane: jah, klassis on nimi, palk, keeled - aga millised meetodid meie klassis on?

Kirjeldame oma klassi täpsemalt liidese iProgrammer abil:

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

Oletame, et me otsisime läbi juba realiseeritud klassid ja selgub, et meil on juba olemas sarnane klass Employee. See ei rakenda kõiki klassi Programmer meetodeid, vaid osa. Siin on juba olemasoleva klassi kood:

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

Loogiline oleks meie juhul teha nii, et meie uus klass Programmer pärib osa vajalikke meetodeid klassist Employee (ja osa realiseerime hiljem juba uues klassis):

<?php class Programmer extends Employee { } ?>

Samuti on meil teada, et klass Pogrammer peab rakendama liidest iProgrammer:

<?php class Programmer implements iProgrammer { } ?>

Ühendame nüüd pärimise klassist Employee ja liidese iProgrammer rakendamise:

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

Tulemuseks on, et meie klass Pogrammer pärib klassist Employee meetodid __construct, getName ja getSalary, kuid meetodid addLang ja getLangs peame realiseerima ise:

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

Liidesele iProgrammer on ükskõik, kas meetodid on klassile oma või päritud - peamine, et kõik kirjeldatud meetodid on realiseeritud.

Kopeerige minu klassi Employee kood ja liidese iProgrammer kood. Ärge kopeerige minu klassi Programmer mustrit - realiseerige see klass iseseisvalt, ilma minu koodi peale vaatamata.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu