⊗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 { } ?>

Дар ҳамон вақт мо медонем, ки синфи Programmer бояд интерфейси iProgrammer-ро амалӣ кунад:

<?php class Programmer implements iProgrammer { } ?>

Биёед мероси гирифтан аз синфи Employee ва амалӣ кардани интерфейси iProgrammer-ро якҷоя кунем:

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

Натиҷа ин хоҳад буд, ки синфи мо Programmer аз синфи 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ščinaShqipСрпскиSrpskiSvenskaKiswahiliไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мо барои коркарди сомона, таҳлил ва шахсӣ кардан аз cookie истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан