L'héritage
L'héritage est un principe de POO qui permet entre autre de factoriser le code en créant des classes qui partagent des attributs et des méthodes.
Exemple sans héritage
Imaginons que nous avons deux types d'utilisateurs : les Readeret les Author. Ces deux types d'utilisateurs ont un email, un mot de passe et peuvent se connecter. Le Reader peut mettre des livres en favori, l' Author peut publier des livres.
Sans héritage, nous allons devoir définir nos deux classes comme suit :
Et nous avons donc pas mal de code dupliqué entre nos deux classes.
Exemple avec héritage
En PHP pour signaler qu'une classe hérite d'une autre, on utilise le mot clé extends.
Ici, User est la classe mère et contient le code commun. Reader et Author sont des classes filles qui héritent de User. En héritant de User, elles vont avoir les attributs et méthodes de User sans avoir besoin de les redéclarer.
Si vous instanciez un User, il pourra se connecter.
Si vous instanciez un Reader, il pourra se connecter et gérer ses livres favoris.
Si vous instanciez un Author, il pourra se connecter et publier des livres.
Héritage et substitution
Si une classe hérite d'une autre classe, on dit qu'elle peut s'y substituer. En pratique cela signifie qui si une fonction prend un User en paramètre et que vous lui passer un Author ou un Reader cela fonctionnera.
L'inverse est par contre faux. Si un Author est une forme de User, un User n'est pas une forme d' Author, il lui manque un attribut et une méthode.
Le mot clé protected
Nous allons voir le troisième et dernier modificateur de visibilité : protected.
Ce mot clé signifie private sauf pour les classes filles.
Si un attribut ou une méthode est protected, il est private pour toutes les actions en dehors de la classe SAUF si ces actions sont réalisées dans une classe fille.
Le constructeur de la classe mère
Si pour une raison quelconque, vous avez besoin de faire un comportement spécifique pour le constructeur d'une classe mère, vous pouvez utiliser cette syntaxe :