Que sont les termes public, privé et protégé dans la programmation orientée objet ?
Notez qu'en java les membres d'un même paquet peuvent accéder aux membres protégés
Que sont les termes public, privé et protégé dans la programmation orientée objet ?
Ils sont modificateurs d'accès et nous aider à mettre en œuvre Encapsulation (ou dissimulation d'informations). Ils indiquent au compilateur quelles autres classes doivent avoir accès au champ ou à la méthode en cours de définition.
private
- Seule la classe actuelle aura accès au champ ou à la méthode.
protected
- Seules la classe actuelle et les sous-classes (et parfois aussi les classes du même paquet) de cette classe auront accès au champ ou à la méthode.
public
- Toute classe peut faire référence au champ ou appeler la méthode.
Cela suppose que ces mots-clés sont utilisés dans le cadre d'une déclaration de champ ou de méthode dans une définition de classe.
Oui, et Java a également un quatrième modificateur d'accès qui est la chaîne vide. Ne pas donner de modificateur d'accès permet l'accès à partir de n'importe quelle classe de niveau paquet.
J'aime bien la partie "compilateur", car dans la plupart des langages que je connais, toutes les fonctions/classes sont facilement accessibles au moment de l'exécution, par exemple via les réflexions dans .NET. Par conséquent, j'ai tendance à dire que ces modificateurs d'accès sont essentiellement une aide pour les programmeurs afin de guider les autres programmeurs travaillant sur/avec le même code en cachant certaines choses.
Il ne s'agit pas vraiment de concepts mais plutôt de mots-clés spécifiques qui ont tendance à apparaître (avec une sémantique légèrement différente) dans des langages populaires comme C++ et Java.
Essentiellement, ils sont destinés à permettre à une classe de restreindre l'accès aux membres (champs ou fonctions). L'idée est que moins un type est autorisé à accéder à un autre type, moins la dépendance peut être créée. Ainsi, l'objet auquel on accède peut être modifié plus facilement sans affecter les objets qui y font référence.
De manière générale, public signifie que tout le monde est autorisé à y accéder, privé signifie que seuls les membres de la même classe sont autorisés à y accéder, et protégé signifie que les membres des sous-classes sont également autorisés. Cependant, chaque langage ajoute ses propres éléments à cela. Par exemple, le C++ vous permet d'hériter de manière non publique. En Java, il existe également un niveau d'accès par défaut (paquet), ainsi que des règles concernant les classes internes, etc.
Ces trois éléments sont des modificateurs d'accès et des mots-clés qui sont utilisés dans une classe. Tout ce qui est déclaré dans public peut être utilisé par n'importe quel objet à l'intérieur ou à l'extérieur de la classe, les variables dans private ne peuvent être utilisées que par les objets à l'intérieur de la classe et ne peuvent pas être modifiées par un accès direct (alors qu'elles peuvent être modifiées par des fonctions comme friend function), tout ce qui est défini dans la section protected peut être utilisé par la classe et ses classes dérivées.
Un élément public est un élément qui est accessible à partir de n'importe quelle autre classe. Il suffit de savoir de quel objet il s'agit et vous pouvez utiliser l'opérateur point pour y accéder. Protégé signifie qu'une classe et ses sous-classes ont accès à la variable, mais pas les autres classes, elles doivent utiliser un getter/setter pour faire quoi que ce soit avec la variable. Un private signifie que seule cette classe a un accès direct à la variable, toutes les autres classes ont besoin d'une méthode/fonction pour accéder ou modifier ces données. J'espère que cela vous aidera.
En résumé, dans la programmation orientée objet, tout est modélisé en classes et en objets. Les classes contiennent des propriétés et des méthodes. Les mots-clés public, private et protected sont utilisés pour spécifier l'accès à ces membres (propriétés et méthodes) d'une classe depuis d'autres classes ou d'autres .dll ou même d'autres applications.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
+1, une de ces choses que j'ai eu un peu de mal à comprendre.