Maison >développement back-end >C++ >Pourquoi puis-je accéder aux champs privés d'un autre objet de la même classe ?

Pourquoi puis-je accéder aux champs privés d'un autre objet de la même classe ?

DDD
DDDoriginal
2024-11-14 11:04:02852parcourir

Why Can I Access Private Fields of Another Object in the Same Class?

Comprendre l'accès au niveau de la classe pour les champs privés

Les principes de la POO appliquent l'encapsulation en limitant l'accès aux membres de la classe privée pour empêcher les modifications non autorisées. Cependant, dans le code suivant, pourquoi est-il possible d'accéder au champ de compte d'un autre objet Personne malgré sa visibilité privée ?

class Person {
    private BankAccount account;

    Person(BankAccount account) { this.account = account; }

    public Person someMethod(Person person) {
        // Why is accessing the private field possible?
        BankAccount a = person.account;
    }
}

Accès au niveau classe ou au niveau objet

Contraire Conformément aux attentes en matière d'accès au niveau objet, les champs privés en Java ont un accès au niveau classe. Cette conception découle des raisons suivantes :

  • Encapsulation :
    L'objectif principal des modificateurs privés est d'assurer l'encapsulation en limitant l'accès aux éléments internes de la classe. L'accès au niveau de l'objet irait à l'encontre de cet objectif, car les objets de la même classe pourraient arbitrairement modifier les états les uns des autres.
  • Indépendance de la mise en œuvre :
    L'accès au niveau de la classe permet la mise en œuvre d'une classe changer sans affecter les interactions extérieures. Si les champs avaient un accès au niveau de l'objet, tout changement dans la structure interne de la classe nécessiterait des modifications correspondantes dans tous les objets référençants.
  • Conscience interne :
    Dans l'extrait de code, les deux Les objets Personne ont la même implémentation interne, y compris le champ de compte. En ayant un accès au niveau de la classe, les objets d'une même classe peuvent supposer qu'ils connaissent les composants internes de chacun et fonctionner en conséquence.

Conclusion :

Accès au niveau de la classe pour les champs privés est un choix de conception intentionnel qui renforce l'encapsulation, garantit l'indépendance de l'implémentation et facilite les interactions entre les objets au sein d'une même classe. Même si cela peut sembler contre-intuitif, cette conception est essentielle pour maintenir l'intégrité et la flexibilité de la programmation orientée objet.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn