À 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
Personnagepossède une variable protégéepointsDeVie; la classeGuerrier(qui hérite de Personnage) peut la modifier, mais pas une classeBoutique. - En PHP ou Java, on utilise le mot-clé
protecteddevant 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
Antonymes
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.