⊗ppOpIfCD 70 of 107 menu

Декларација конструктора у интерфејсу у ООП у PHP-у

У интерфејсу се такође може декларисати конструктор класе. Погледајмо на примеру. Претпоставимо да смо одлучили да направимо класу Rectangle, у којој ће бити методе за проналажење површине, обимна, као и конструктор, који прихвата два параметра. Хајде да опишемо нашу класу помоћу интерфејса:

<?php interface iRectangle { public function __construct($a, $b); // конструктор са два параметра public function getSquare(); public function getPerimeter(); } ?>

Хајде да напишемо имплементацију нашег интерфејса iRectangle:

<?php class Rectangle implements iRectangle { private $a; private $b; public function __construct($a, $b) { $this->a = $a; $this->b = $b; } public function getSquare() { return $this->a * $this->b; } public function getPerimeter() { return 2 * ($this->a + $this->b); } } ?>

Шта нам је дало декларисање конструктора у интерфејсу? Као прво, нећемо заборавити да имплементирамо конструктор у класи. Као друго, интерфејс експлицитно указује, да конструктор класе мора прихватити два параметра: ни више, ни мање. Ово такође ће нас заштити од случајне грешке.

Зашто смо креирали посебан интерфејс iRectangle, а нисмо додали конструктор у интерфејс Figure? Зато што све фигуре имају различити број страна и, самим тим, различити број параметара у конструктору. Зато нам је морало да се створи посебан, прецизнији интерфејс конкретно за правоугаонике.

Направите интерфејс iCube, који ће описувати фигуру Коцка. Нека ваш интерфејс опише конструктор, који као параметар прихвата страну коцке, као и методе за добијање запремине коцке и површине.

Направите класу Cube, која имплементира интерфејс iCube.

Направите интерфејс iUser, који ће описувати корисника. Претпоставља се да корисник има име и године и да ће ова поља бити прослеђена као параметри конструктора. Нека ваш интерфејс такође одређује да ће корисник имати геттере (али не и сеттере) за име и године.

Направите класу User, која имплементира интерфејс iUser.

Српски
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
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј