⊗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.

Создадете интерфејс iCircle со методи getRadius и getDiameter.

Направете класата Disk да имплементира два интерфејси: и iFigure, и iCircle.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј