Protégé

Définition, exemples et bonnes pratiques

À retenir

  • Accessibilité limitée à la classe d'origine et ses héritières.
  • Niveau intermédiaire entre « public » (ouvert à tous) et « privé » (strictement interne).
  • Concept clé du pilier de l'encapsulation en programmation objet.

En programmation orientée objet, cet adjectif qualifie un élément (variable ou fonction) dont l'accès est réservé à sa propre classe et à toutes celles qui en héritent. C'est comme un secret de famille : les parents et les enfants le connaissent, mais personne d'extérieur n'y a accès.

Étymologie

Issu du participe passé du verbe « protéger », du latin protegere (couvrir devant). En informatique, c'est la traduction directe du mot-clé anglais protected, utilisé pour verrouiller l'accès aux données tout en permettant une certaine souplesse pour les descendants d'une classe.

Exemples d'usage

  • Dans un jeu vidéo, une classe Personnage possède une variable protégée pointsDeVie ; la classe Guerrier (qui hérite de Personnage) peut la modifier, mais pas une classe Boutique.
  • En PHP ou Java, on utilise le mot-clé protected devant une méthode pour qu'elle ne soit pas appelable depuis l'extérieur du système de classes.

Cas d'usage

On utilise ce concept lors de la conception de hiérarchies de classes (héritage). Il permet de partager des outils internes ou des données sensibles avec des versions spécialisées d'un objet sans les exposer publiquement dans tout le programme.

Bonnes pratiques

Il est recommandé de ne rendre une donnée « protégée » que si l'on prévoit réellement que des sous-classes en auront besoin. Si l'héritage n'est pas nécessaire, préférez le mode « privé » (private) pour renforcer l'encapsulation et limiter les effets de bord lors de modifications futures.

Synonymes

visibilité restreinte accès hérité

Antonymes

public privé

Conseil

Pour bien comprendre, voyez cela comme une hiérarchie : si vous créez une classe de base très générale, le mode protégé est votre meilleur allié pour donner des « super-pouvoirs » à vos classes dérivées sans que l'utilisateur final du code ne puisse tout casser.

Questions fréquentes

Quelle est la différence avec le mode privé ?

Un élément privé est invisible pour les classes enfants, alors qu'un élément protégé leur est accessible.

Puis-je accéder à un membre protégé depuis une instance d'objet ?

Non, l'accès protégé est réservé au code interne des classes, on ne peut pas l'appeler directement depuis l'extérieur via une variable.

Est-ce que tous les langages utilisent ce mot ?

La plupart des langages objets comme Java, C++, C# ou PHP l'utilisent. Python utilise une convention visuelle (un seul underscore devant le nom) car il n'a pas de verrouillage strict.