Article mis à jour le : 05-05-2022
Quelques rappels sur les notions d'héritage, de classe abstraite et de méthodes Final en phpVoici quelques rappels sur des fonctions avancées de la programmation orientée objet en PHP. Ces fonctionnalités seront bien utiles dans le cadre de développement d'applications puissantes.
L'héritage consiste à créer un modèle de classe qui reprend attributs et méthodes d'une classe parente, en y ajoutant les siens. Par exemple, la classe "gardien-de-but" hérite de la classe "joueur-de-foot". Elle permet d'y ajouter des spécificités. Cependant, elle n'héritera pas des données private, mais uniquement protected ou public.
ATTENTION avec le comportement du constructeur :
- Si vous ne mettez pas de constructeur dans votre classe enfant (c'est à dire un constructeur propre à elle), seule le constructeur de la classe mère sera exécuté.
- Par contre, si vous spécifiez un constructeur propore à la classe fille, c'est, par défaut, uniquement celui-ci qui sera exécuté. Si vous voulez en plus exécuter celui de la classe mère, il faut mettre dans le constructeur de la fille :
Voici un exemple de test :
Une classe abstraite est une classe qui ne peut pas être instanciée. On peut donc dire qu'elle sert de modèle aux classes qui en hériteront. De plus, le mot clef abstract sert peut aussi servir à forcer les classes filles à réécrire une fonction. Dans notre cas, un gardien de but tirant dans le ballon différemment qu'un attaquant par exemple, nous devons réécrire la fonction :
Final est l'inverse de abstract. Devant une fonction, il empêchera les classes filles de permettre la réécriture de la fonction. Devant la classe, il empêchera l'héritage de cette dernière.
La surcharge de méthode permet à une classe fille de réécrire une fonction héritée afin d'en modifier le comportement. Cependant, un problème se pose si la méthode utilise un attribut privé de la classe mère. Pour résoudre ce problème, on doit appeller d'abord la méthode de la classe mère, avant d'executer son propre code :