⊗ppOpIfSII 73 of 107 menu

PHP-тегі ООП-да бірнеше интерфейстер

PHP-де көптік мұрагерлік жоқ - әрбір кластың тек бір ата-анасы болуы мүмкін. Алайда, интерфейстермен жағдай басқаша: әрбір класс кез келген мөлшердегі интерфейстерді жүзеге асыра алады. Ол үшін интерфейстердің атауларын implements кілт сөзінен кейін үтір арқылы жіктеу керек.

Бұл интерфейстердің абстрактілі кластардан тағы бір айырмашылығы - бірнеше интерфейстерді жүзеге асыруға болады, бірақ бірнеше абстрактілі кластарды мұрагерлікке алуға болмайды.

Практикада көрейік. iFigure интерфейсінен басқа iTetragon интерфейсі бар делік. Бұл интерфейстің әдістерін Quadrate және Rectangle кластары жүзеге асырады, себебі олардың 4 қабырғасы бар, бірақ Disk класы жүзеге асырмайды.

iTetragon интерфейсі төртбұрыштың барлық төрт қабырғасы үшін геттерлерді сипаттасын:

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

Сондай-ақ, бізде бұрын жасаған iFigure интерфейсі бар делік:

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

Quadrate класы екі интерфейсті жүзеге асырсын. Ол үшін екі интерфейсті implements кілт сөзінен кейін үтір арқылы жіктейміз:

<?php class Quadrate implements iFigure, iTetragon { // мұнда жүзеге асырылуы болады } ?>

Енді Quadrate класын iTetragon интерфейсін жүзеге асыратындай етіп әзірлейік. Біздің шаршымыз төртбұрыштың ерекше жағдайы болып табылатыны анық, себебі шаршының барлық қабырғалары тең. Сондықтан барлық жаңа әдістер бірдей нәрсені - шаршының енін қайтарады:

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

Тік төртбұрышта барлық қабырғалары бірдей емес екені анық, тек қарама-қарсы қабырғалары ғана бірдей. Бұл жағдайда жаңа әдістер сәл өзгеше болады. Ал, кез келген трапецияда барлық 4 қабырғасы әртүрлі болады.

Дегенмен, қандай фигураны қарастыратынымыз маңызды емес - маңыздысы, осы фигуралардың барлығында сипатталған әдістер болады (тіпті кейбір фигуралар ерекше болса да) және бір типте жұмыс істейді.

Rectangle класы да екі интерфейсті жүзеге асыратындай етіңіз: iFigure және iTetragon.

getRadius және getDiameter әдістері бар iCircle интерфейсін жасаңыз.

Disk класы да екі интерфейсті жүзеге асыратындай етіңіз: iFigure және iCircle.

Қазақ
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 файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау