⊗ppOpIfII 74 of 107 menu

Overerving van klasse en implementatie van interface in OOP in PHP

Een klasse kan overerven van een andere klasse en tegelijkertijd een interface implementeren. Laten we dit bekijken met een praktisch voorbeeld.

Stel we willen een klasse Programmer maken, die een naam, salaris en een lijst met talen heeft die de programmeur beheerst. Onze beschrijving van de klasse is nogal vaag: ja, de klasse heeft een naam, salaris, talen - maar welke methodes zal onze klasse hebben?

Laten we onze klasse nauwkeuriger beschrijven met behulp van de interface iProgrammer:

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

Stel we hebben ons reeds geïmplementeerde klassen bekeken en het blijkt dat we al een vergelijkbare klasse Employee hebben. Hij implementeert niet alle methodes van de klasse Programmer, maar wel een deel. Hier is de code van onze reeds bestaande klasse:

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

Het is logisch in ons geval om ervoor te zorgen dat onze nieuwe klasse Programmer een deel van de nodige methodes erft van de klasse Employee (en een deel zullen we later implementeren in de nieuwe klasse zelf):

<?php class Programmer extends Employee { } ?>

Tegelijkertijd weten we dat de klasse Programmer de interface iProgrammer moet implementeren:

<?php class Programmer implements iProgrammer { } ?>

Laten we overerving van de klasse Employee en implementatie van de interface iProgrammer combineren:

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

Het resultaat is dat onze klasse Programmer de methodes __construct, getName en getSalary zal erven van de klasse Employee, en de methodes addLang en getLangs zullen we zelf moeten implementeren:

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

De interface iProgrammer maakt het niet uit of de methodes eigen zijn aan de klasse of geërfd - het belangrijkste is dat alle beschreven methodes geïmplementeerd zijn.

Kopieer de code van mijn klasse Employee en de code van de interface iProgrammer. Kopieer niet mijn opzet voor de klasse Programmer - implementeer deze klasse zelfstandig zonder in mijn code te spieken.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren