⊗ppOpIfSII 73 of 107 menu

Verskeie koppelvlakke in OOP in PHP

In PHP is daar nie veelvuldige oorerwing nie - elke klas kan slegs een ouer hê. Met koppelvlakke is dit egter anders: elke klas kan enige aantal koppelvlakke implementeer. Om dit te doen, moet die name van die koppelvlakke geskei deur kommas na die sleutelwoord implements gelys word.

Dit toon nog 'n verskil tussen koppelvlakke en abstrakte klasse - jy kan baie koppelvlakke implementeer, maar jy kan nie verskeie abstrakte klasse oorerf nie.

Kom ons probeer dit in die praktyk. Behalwe vir die koppelvlak iFigure, het ons ook die koppelvlak iTetragon. Die metodes van hierdie koppelvlak sal geïmplementeer word deur klasse Quadrate en Rectangle, aangesien hulle 4 sye het, maar nie deur die klas Disk nie.

Laat die koppelvlak iTetragon gettors vir al vier sye van die veelhoek beskryf:

<?php interface iTetragon { public function getA(); public function getB(); public function getC(); public function getD(); } ?>

Veronderstel ons het ook die koppelvlak iFigure, wat ons vroeër reeds geskep het:

<?php interface iFigure { public function getSquare(); public function getPerimeter(); } ?>

Kom ons sorg dat die klas Quadrate twee koppelvlakke implementeer. Om dit te doen, lys ons albei koppelvlakke geskei deur kommas na die sleutelwoord implements:

<?php class Quadrate implements iFigure, iTetragon { // hier sal die implementering wees } ?>

Kom ons werk nou ons klas Quadrate by, sodat dit die koppelvlak iTetragon implementeer. Dit is duidelijk dat ons vierkant 'n gedegenereerde geval van 'n vierhoek is, aangesien alle sye van 'n vierkant gelyk is. Dus sal al die nuwe metodes dieselfde teruggee - die breedte van die vierkant:

<?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; } } ?>

Dit is duidelik dat in 'n reghoek nie alle sye dieselfde is nie, maar slegs teenoorgestelde sye. In hierdie geval sal die nuwe metodes 'n bietjie verskil. En in 'n trapesium sal al 4 sye heeltemal anders wees.

Dit maak egter nie saak watter figuur ons oorweeg nie - wat belangrik is, is dat al hierdie figure die beskryfde metodes sal hê (selfs al is sommige figure gedegenereerd) en eenvormig sal werk.

Sorg dat die klas Rectangle ook twee koppelvlakke implementeer: beide iFigure, en iTetragon.

Skep 'n koppelvlak iCircle met metodes getRadius en getDiameter.

Sorg dat die klas Disk ook twee koppelvlakke implementeer: beide iFigure, en iCircle.

Afrikaans
Azə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
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp