L’héritage en programmation orientée objet avec PHP

L’héritage simple

Il est possible que des classes partagent des attributs et des méthodes. Ce principe est défini par la notion d’héritage qui fait que les classes peuvent être vues comme un ensemble de catégories et de sous catégories.

Pour définir un héritage entre deux classes il faut utiliser le mot-clé extends après le nom de la classe dans sa déclaration.

Exemple:

Le code ci-dessus définit une classe MountainBike qui hérite de la classe BiCycle. La classe MountainBike peut ainsi utiliser tous les attributs et toutes les méthodes de la classe BiCycle.

Il est aussi possible pour la classe MountainBike de redéfinir des attributs ou des méthodes portant les mêmes noms que la classe BiCycles.

Les traits

Les traits sont un mécanisme permettant de réutiliser du code.

Un trait peut être vu comme un ensemble de méthodes qui peuvent être incluses dans d’autres classes. Le contenu du trait est copié dans la classe qui veut l’utiliser. Il n’y a pas besoin d’instancier un trait.

L’avantage des traits est de réduire la duplication de code et de permettre l’utilisation de méthodes de classe sans avoir à passer par la notion d’héritage.

Un trait se définit en utilisant le mot-clé trait.

Pour inclure un trait dans une classe, il faut utiliser le mot-clé use.

La méthode maFonction() est maintenant disponible dans chaque instance de la classe maClasse.

Ce code va afficher :

I Love Opentuto.com!

Les classes abstraites

Une classe abstraite est une classe utilisée pour définir un type d’objet très générique, inutilisable directement, qui force les sous-types à avoir certaines particularités.

Une classe abstraite définit des méthodes et des attributs qui seront disponibles dans les classes qui l’étendent.

Pour indiquer qu’une classe est abstraite, il faut la préfixer du mot abstract.

Pour définir une classe abstraite voiture il faut écrire :

Il est aussi possible de définir des méthodes abstraites dans une classe. Cela permet d’obliger les classes dérivées à implémenter ces méthodes. Pour déclarer une méthode comme abstraite, il faut la préfixer du mot abstract.

Une classe contenant au moins une méthode abstraite doit obligatoirement être définie comme abstraite.

Par exemple, en définissant une classe abstraite comme suit :

Il est possible de définir une classe fille comme suit :

Ce qui permet d’écrire :

Les interfaces

Les interfaces sont utilisées pour vérifier que les objets correspondent à certaines spécifications, c’est-à-dire que chaque objet est conforme à certains comportements, qu’il peut gérer certains types d’évènements ou qu’il possède certaines fonctionnalités.

Pour déclarer une interface, il faut utiliser le mot-clé interface. Les méthodes définies dans une interface sont forcément publiques.

Pour indiquer qu’une classe implémente une interface précise, il faut utiliser le mot-clé implements. Une classe peut implémenter plusieurs interfaces. Dans ce cas, les noms des différentes interfaces sont séparés par des virgules.

  • Les interfaces peuvent hériter d’autres interfaces.
  • Les classes abstraites peuvent implémenter des interfaces.

 

Laisser un commentaire