⊗ppOpIfII 74 of 107 menu

Héritage de classe et implémentation d'interface en POO en PHP

Une classe peut hériter d'une autre classe et en même temps implémenter une interface. Examinons cela avec un exemple pratique.

Supposons que nous voulons créer une classe Programmer, qui aura un nom, un salaire et une liste de langages que le programmeur connaît. Pour l'instant, notre description de la classe est assez vague : oui, la classe aura un nom, un salaire, des langages - mais quelles méthodes y aura-t-il dans notre classe ?

Décrivons notre classe plus précisément à l'aide de l'interface iProgrammer :

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

Supposons que nous avons fouillé dans nos classes déjà implémentées et, il s'avère que nous avons déjà une classe similaire Employee. Elle n'implémente pas toutes les méthodes de la classe Programmer, mais une partie. Voici le code de notre classe déjà existante :

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

Il est logique dans notre cas de faire en sorte que notre nouvelle classe Programmer hérite d'une partie des méthodes dont elle a besoin de la classe Employee (et nous implémenterons une partie plus tard dans la nouvelle classe elle-même) :

<?php class Programmer extends Employee { } ?>

En même temps, nous savons que la classe Pogrammer doit implémenter l'interface iProgrammer :

<?php class Programmer implements iProgrammer { } ?>

Combinons l'héritage de la classe Employee et l'implémentation de l'interface iProgrammer :

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

Il en résultera que notre classe Pogrammer héritera de la classe Employee les méthodes __construct, getName et getSalary, tandis que les méthodes addLang et getLangs devront être implémentées par nous :

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

L'interface iProgrammer s'en fiche, que les méthodes soient natives à la classe ou héritées - l'important est que toutes les méthodes décrites soient implémentées.

Copiez le code de ma classe Employee et le code de l'interface iProgrammer. Ne copiez pas mon ébauche de la classe Programmer - sans regarder mon code, implémentez cette classe vous-même.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser