⊗ppOpIfSII 73 of 107 menu

Interfaces Nyingi katika OOP katika PHP

Katika PHP hakuna urithi mwingi - kila class inaweza kuwa na mzazi mmoja tu. Hata hivyo, kwa interfaces, hali ni tofauti: kila class inaweza kutekeleza idadi yoyote ya interfaces. Ili kufanya hivyo, majina ya interfaces yanahitaji kuorodheshwa kwa kutumia koma baada ya neno muhimu implements.

Hii ni tofauti nyingine kati ya interfaces na abstract classes - unaweza kutekeleza interfaces nyingi, lakini huwezi kurithi abstract classes nyingi.

Tujaribu kwa vitendo. Hebu tuseme badala ya interface iFigure tunayo pia interface iTetragon. Mbinu za interface hii zitatekelezwa na classes Quadrate na Rectangle, kwa sababu zina pande 4, lakini si class Disk.

Hebu interface iTetragon ichafue getters kwa pande zote nne za pembe-nne:

<?php interface iTetragon { public function getA(); public function getB(); public function getC(); public function getD(); } ?>

Hebu tuseme pia tuna interface iFigure, ambayo tuliwahi kutengeneza hapo awali:

<?php interface iFigure { public function getSquare(); public function getPerimeter(); } ?>

Hebu tufanye class Quadrate itekeleze interfaces mbili. Ili kufanya hivyo, tuorodheshe interfaces zote mbili kwa kutumia koma baada ya neno muhimu implements:

<?php class Quadrate implements iFigure, iTetragon { // utekelezaji utakuwa hapa } ?>

Hebu sasa tuboreshe class yetu Quadrate, ili itekeleze interface iTetragon. Ni wazi kuwa mraba wetu ni kesi maalum ya pembe-nne, kwa sababu katika mraba pande zote ni sawa. Kwa hivyo mbinu zote mpya zitarudisha kitu kimoja - upana wa mraba:

<?php class Quadrate implements iFigure, iTetragon { private $a; public function __construct($a) { $this->a = $a; } public function getA() { return $this->a; } public function getB() { return $this->a; } public function getC() { return $this->a; } public function getD() { return $this->a; } public function getSquare() { return $this->a * $this->a; } public function getPerimeter() { return 4 * $this->a; } } ?>

Ni wazi kuwa katika mstatili sio pande zote ni sawa, lakini tu pande zinazokabiliana. Katika kesi hii, mbinu mpya zitakuwa tofauti kidogo. Na, katika trapezoid yoyote kwa ujumla pande zote 4 zitakuwa tofauti.

Hata hivyo, haijalishi ni umbo gani tutakalochunguza - muhimu ni kwamba maumbo haya yote yatakuwa na mbinu zilizoelezewa (ingawa baadhi ya maumbo ni maalum) na kufanya kazi kwa namna ile ile.

Fanya class Rectangle pia itekeleze interfaces mbili: iFigure, na iTetragon.

Tengeneza interface iCircle na mbinu getRadius na getDiameter.

Fanya class Disk pia itekeleze interfaces mbili: iFigure, na iCircle.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa