⊗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šuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј