⊗ppOpIfSII 73 of 107 menu

PHP da OOP da Bir Nechta Interfeyslar

PHP da ko'p meros yo'q - har bir class faqat bitta ota-ona bo'lishi mumkin. Interfeyslar bilan ish, biroq, boshqacha: har bir class istalgan miqdordagi interfeyslarni amalga oshirishi mumkin. Buning uchun interfeys nomlarini implements kalit so'zidan keyin vergul bilan ajratib yozish kerak.

Bu interfeyslarning mavhum classlardan yana bir farqini namoyon etadi - ko'p interfeyslarni amalga oshirish mumkin, lekin bir nechta mavhum classlardan meros olish mumkin emas.

Keling, amalda sinab ko'ramiz. Faraz qilaylik, bizda iFigure interfeysidan tashqari iTetragon interfeysi ham bor. Ushbu interfeys metodlari Quadrate va Rectangle classlari tomonidan amalga oshiriladi, chunki ularning 4 tomoni bor, lekin Disk classi emas.

Faraz qilaylik, iTetragon interfeysi to'rtburchakning barcha to'rt tomoni uchun getterlarni ta'riflaydi:

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

Faraz qilaylik, bizda ilgari yaratgan iFigure interfeysi ham bor:

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

Keling, Quadrate classi ikki interfeysni amalga oshirishini ta'minlaylik. Buning uchun ikkala interfeysni implements kalit so'zidan keyin vergul bilan ajratib yozamiz:

<?php class Quadrate implements iFigure, iTetragon { // bu yerda amalga oshiriladi } ?>

Keling, endi Quadrate classimizni iTetragon interfeysini amalga oshirishi uchun ishlab chiqamiz. Tushunarli bo'lishi kerakki, bizning kvadratimiz to'rtburchakning o'ziga xos holatidir, chunki kvadratning barcha tomonlari teng. Shuning uchun barcha yangi metodlar bir xil narsani qaytaradi - kvadratning kengligini:

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

Aniqki, to'rtburchakda hamma tomonlar bir xil emas, faqat qarama-qarshi tomonlar. Bunday holda yangi metodlar biroz farq qiladi. Xo'sh, va har qanday trapetsiyada umuman barcha 4 tomon har xil bo'ladi.

Biroq, qanday shaklni ko'rib chiqayotganimiz muhim emas - muhimi, barcha bu shakllar tavsiflangan metodlarga ega bo'ladi (garchi ba'zi shakllar o'ziga xos bo'lsa ham) va bir xil tarzda ishlaydi.

Rectangle classi ham ikkita interfeysni amalga oshirishini ta'minlang: ham iFigure, ham iTetragon.

getRadius va getDiameter metodlariga ega iCircle interfeysini yarating.

Disk classi ham ikkita interfeysni amalga oshirishini ta'minlang: ham iFigure, ham iCircle.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish