⊗ppOpFnMt 64 of 107 menu

Méthodes abstraites en POO en PHP

Les classes abstraites peuvent également contenir des méthodes abstraites. De telles méthodes ne doivent pas avoir d'implémentation, mais sont nécessaires pour indiquer que de telles méthodes doivent être présentes dans les classes descendantes. Et proprement dite, l'implémentation de ces méthodes est déjà la tâche des classes descendantes.

Pour déclarer une méthode comme abstraite, lors de sa déclaration, il faut écrire le mot-clé abstract.

Essayons en pratique. Supposons que toutes les classes descendantes de la classe User doivent avoir une méthode increaseRevenue.

Cette méthode doit prendre le revenu actuel de l'utilisateur et l'augmenter d'une certaine valeur, transmise en paramètre.

La classe User elle-même ne sait pas quel exactement revenu l'héritier recevra - après tout, pour un employé c'est un salaire, et pour un étudiant - une bourse. Par conséquent, chaque classe descendante implémentera cette méthode à sa manière.

L'essence ici est que la méthode abstraite de la classe User oblige le programmeur à implémenter cette méthode dans les classes descendantes, sinon PHP générera une erreur. Ainsi, vous, ou un autre programmeur, travaillant avec votre code, ne pourrez en aucun cas oublier d'implémenter la méthode nécessaire dans la classe descendante.

Alors, essayons en pratique. Ajoutons une méthode abstraite increaseRevenue dans la classe User :

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Méthode abstraite sans corps : abstract public function increaseRevenue($value); } ?>

Supposons que notre classe Employee reste pour l'instant sans changements. Dans ce cas, même si on ne crée pas d'objet de la classe Employee, mais qu'on exécute simplement le code dans lequel nos classes sont définies, - PHP générera une erreur.

Écrivons maintenant l'implémentation de la méthode increaseRevenue dans la classe Employee :

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Écrivons l'implémentation de la méthode : public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Vérifions le fonctionnement de notre classe :

<?php $employee = new Employee; $employee->setName('john'); $employee->setSalary(1000); $employee->increaseRevenue(100); echo $employee->getSalary(); ?>

Implémentons la méthode increaseRevenue dans la classe Student. Seulement maintenant, notre méthode augmentera la bourse :

<?php class Student extends User { private $scholarship; // bourse public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // La méthode augmente la bourse : public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Ajoutez à votre classe User la même méthode abstraite increaseRevenue. Écrivez l'implémentation de cette méthode dans les classes Employee et Student.

Dans la classe Figure, créez des méthodes abstraites pour obtenir l'aire et le périmètre de la figure.

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