Accès aux champs privés d'objets de la même classe
En Java, le modificateur d'accès privé restreint la visibilité du champ à la classe dans laquelle le champ est déclaré. Cependant, une idée fausse courante est que cette restriction s'applique aux objets de la même classe.
Considérons l'exemple suivant :
class Person { private BankAccount account; Person(BankAccount account) { this.account = account; } public Person someMethod(Person person) { // Why is accessing private field possible? BankAccount a = person.account; } }
Pourquoi l'accès à person.account est-il possible ?
Le modificateur privé applique l'encapsulation pour protéger l'état interne d'un objet contre les modifications externes. Cependant, au sein d’une même classe, les objets partagent les mêmes détails d’implémentation. Ils sont conscients des champs et des méthodes privés de la classe.
Comme l'explique Artemix :
"L'idée est que le 'monde extérieur' ne devrait pas apporter de modifications aux processus internes de Person, car la mise en œuvre de Person peut changer. temps (et il faudrait changer tout le monde extérieur pour corriger les différences d'implémentation - ce qui est presque impossible). "
Puisque les objets d'une même classe partagent les mêmes connaissances d'implémentation, leur accorder l'accès à des champs privés garantit qu'ils peuvent toujours accéder et manipuler correctement l'état interne de la classe. Si l'implémentation change, seul le code de la classe doit être mis à jour, éliminant ainsi le besoin de modifier le code en dehors de la classe.
Par conséquent, la conception POO permet aux champs privés d'avoir un accès au niveau de la classe plutôt qu'un accès au niveau de l'objet. faciliter l'encapsulation tout en maintenant la cohérence au sein de l'implémentation de la classe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!