⊗ppOpIfII 74 of 107 menu

PHP'de OOP'de Sınıftan Kalıtım ve Arayüz Uygulama

Bir sınıf, başka bir sınıftan kalıtım alabilir ve aynı zamanda bir arayüz uygulayabilir. Pratik bir örnekle inceleyelim.

Diyelim ki, adı, maaşı ve programcının bildiği dillerin listesi olan bir Programmer sınıfı yapmak istiyoruz. Şu an sınıfımızın tanımı oldukça belirsiz: evet, sınıfta ad, maaş, diller olacak - ama sınıfımızda hangi metodlar olacak?

Sınıfımızı iProgrammer arayüzünü kullanarak daha kesin bir şekilde tanımlayalım:

<?php interface iProgrammer { public function __construct($name, $salary); public function getName(); public function getSalary(); public function getLangs(); public function addLang($lang); } ?>

Diyelim ki halihazırda uyguladığımız sınıflarda araştırma yaptık ve zaten benzer bir Employee sınıfımızın olduğunu gördük. Bu sınıf, Programmer sınıfının tüm metodlarını uygulamıyor, ama bir kısmını uyguluyor. İşte zaten mevcut olan sınıfımızın kodu:

<?php class Employee { private $name; private $salary; public function __construct($name, $salary) { $this->name = $name; $this->salary = $salary; } public function getName() { return $this->name; } public function getSalary() { return $this->salary; } } ?>

Mantıklı olan, yeni Programmer sınıfımızın, kendisi için gerekli metodların bir kısmını Employee sınıfından kalıtım alması (geri kalan kısmını ise daha sonra yeni sınıfın kendi içinde uygulayacağız):

<?php class Programmer extends Employee { } ?>

Bu arada, Programmer sınıfının iProgrammer arayüzünü uygulaması gerektiğini biliyoruz:

<?php class Programmer implements iProgrammer { } ?>

Şimdi Employee sınıfından kalıtım alma ile iProgrammer arayüzünü uygulamayı birleştirelim:

<?php class Programmer extends Employee implements iProgrammer { } ?>

Böylece, Programmer sınıfımız Employee sınıfından __construct, getName ve getSalary metodlarını kalıtım alacak, addLang ve getLangs metodlarını ise bizim uygulamamız gerekecek:

<?php class Programmer extends Employee implements iProgrammer { public function addLang($lang) { // uygulama } public function getLangs() { // uygulama } } ?>

iProgrammer arayüzü için metodların sınıfa ait mi yoksa kalıtımla mı geldiği önemli değil - önemli olan, tanımlanan tüm metodların uygulanmış olması.

Benim Employee sınıfımın kodunu ve iProgrammer arayüzünün kodunu kopyalayın. Benim Programmer sınıfı taslağımı kopyalamayın - benim koduma bakmadan bu sınıfı kendi başınıza uygulayın.

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