⊗ppOpFnSII 73 of 107 menu

Մի քանի ինտերֆեյսներ OOP-ում 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हिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել