⊗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ščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне