⊗ppOpIfSII 73 of 107 menu

PHP'de OOP'de Birden Fazla Arayüz

PHP'de çoklu kalıtım yoktur - her sınıfın yalnızca bir ebeveyni olabilir. Ancak, arayüzler konusunda durum farklıdır: her sınıf istediği sayıda arayüz uygulayabilir. Bunun için, arayüz isimleri implements anahtar kelimesinden sonra virgülle ayrılarak listelenmelidir.

Bu, arayüzlerin soyut sınıflardan bir başka farkını ortaya koyar - birçok arayüz uygulanabilir, ancak birden fazla soyut sınıf miras alınamaz.

Pratikte deneyelim. Diyelim ki iFigure arayüzünün yanı sıra, iTetragon arayüzümüz de var. Bu arayüzün metodları, Quadrate ve Rectangle sınıfları tarafından uygulanacak, çünkü onların 4 kenarı var, ancak Disk sınıfı tarafından uygulanmayacak.

Diyelim ki iTetragon arayüzü, dörtgenin dört kenarının tamamı için getter'ları tanımlıyor:

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

Ayrıca, daha önce yaptığımız iFigure arayüzümüz de olsun:

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

Quadrate sınıfının iki arayüz uygulamasını sağlayalım. Bunun için, implements anahtar kelimesinden sonra her iki arayüzü virgülle ayırarak listeliyoruz:

<?php class Quadrate implements iFigure, iTetragon { // burada uygulama olacak } ?>

Şimdi Quadrate sınıfımızı, iTetragon arayüzünü de uygulayacak şekilde geliştirelim. Karemizin, dejenere bir dörtgen durumu olduğu açıktır, çünkü karenin tüm kenarları eşittir. Bu nedenle tüm yeni metodlar aynı şeyi döndürecek - karenin genişliğini:

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

Açıktır ki, bir dikdörtgende artık tüm kenarlar aynı değildir, sadece karşıt kenarlar aynıdır. Bu durumda, yeni metodlar biraz farklılaşacaktır. Ve, örneğin bir yamukta genellikle 4 kenarın tamamı farklı olacaktır.

Ancak, hangi şekli ele aldığımızın bir önemi yoktur - önemli olan, tüm bu şekillerin tanımlanan metodlara sahip olmasıdır (bazı şekiller dejenere olsa bile) ve benzer şekilde çalışmasıdır.

Rectangle sınıfının da iki arayüz uygulamasını sağlayın: hem iFigure, hem de iTetragon.

getRadius ve getDiameter metodlarına sahip iCircle arayüzünü yapın.

Disk sınıfının da iki arayüz uygulamasını sağlayın: hem iFigure, hem de iCircle.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet