⊗ppOpIfCD 70 of 107 menu

Deklaration af konstruktør i interface i OOP i PHP

I et interface kan man også deklarere en konstruktør klasse. Lad os se på et eksempel. Lad os sige, at vi besluttede at oprette en klasse Rectangle, hvor der vil være metoder til at finde areal, omkreds, samt en konstruktør, der accepterer to parametre. Lad os beskrive vores klasse ved hjælp af et interface:

<?php interface iRectangle { public function __construct($a, $b); // konstruktør med to parametre public function getSquare(); public function getPerimeter(); } ?>

Lad os skrive implementeringen af vores interface 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); } } ?>

Hvad gav deklarationen af konstruktøren i interfacet os? For det første glemmer vi ikke at implementere konstruktøren i klassen. For det andet angiver interfacet eksplicit, at klassens konstruktør skal acceptere to parametre: ikke mere, ikke mindre. Dette beskytter os også mod utilsigtede fejl.

Hvorfor oprettede vi et separat interface iRectangle, og ikke tilføjede konstruktøren til interfacet Figure? Fordi alle figurer har et forskelligt antal sider og følgelig et forskelligt antal parametre i deres konstruktør. Derfor var vi nødt til at oprette et separat, mere præcist interface specifikt for rektangler.

Lav et interface iCube, som vil beskrive figuren Terning. Lad dit interface beskrive en konstruktør, der som parameter accepterer terningens side, samt metoder til at opnå terningens rumfang og overfladeareal.

Lav en klasse Cube, der implementerer interfacet iCube.

Lav et interface iUser, som vil beskrive en bruger. Det forventes, at brugeren har et navn og en alder, og at disse felter vil blive overført som parametre til konstruktøren. Lad dit interface også specificere, at brugeren vil have gettere (men ikke settere) for navn og alder.

Lav en klasse User, der implementerer interfacet iUser.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis