Comme nous avons vu dans l’article de l’héritage , la notion d’héritage nous permet de factoriser des traitements communs à plusieurs classes dans une classe mère. Alors que l’abstraction ne devrait pas être instanciée directement, les objets devant être uniquement créés à partir des classes filles qui en héritent. C’est la notion d’abstraction.
PHP nous permet de définir des méthodes ou des classes abstraites grâce au mot-clé abstract
Une classe abstraite ne peut pas être instanciée, elle met à disposition de ses filles une partie de ses fonctionnalités (de visibilité protected ou public), et impose aux classes qui en héritent de définir certaines méthodes ( abstraites ).
Une méthode abstraite ne peut pas contenir de corps, sa présence indique simplement que chaque classe fille non abstraite devra redéfinir cette méthode en respectant sa signature.
Exemple d’utilisation
<?php //Enter your code here, enjoy! abstract class Voiture { abstract protected function up($param); public function down() { echo 'Voiture Down'; } } class Dacia extends Voiture { public function up($param) { echo 'Voiture UP'; } }
Une classe abstraite qui hérite d’une autre classe abstraite n’a pas à en redéfinir les méthodes abstraites.
Exemple d’utilisation
<?php //Enter your code here, enjoy! abstract class Voiture { abstract public function up($param); public function down() { echo 'Voiture Down'; } } abstract class Camion extends Voiture { abstract public function demarrer(); } class Dacia extends Camion { public function demarrer() { echo 'Camion démarré'; } public function up($param){ echo 'Voiture Up'; } }
Dance ce code, la class « Dacia » doit implémenter les deux méthodes abstraites « demarrer » et « up »
Bonne lecture 🙂