> 백엔드 개발 > C++ > 같은 클래스에 있는 다른 개체의 비공개 필드에 액세스할 수 있는 이유는 무엇입니까?

같은 클래스에 있는 다른 개체의 비공개 필드에 액세스할 수 있는 이유는 무엇입니까?

DDD
풀어 주다: 2024-11-14 11:04:02
원래의
849명이 탐색했습니다.

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

비공개 필드에 대한 클래스 수준 액세스 이해

OOP 원칙은 무단 수정을 방지하기 위해 비공개 클래스 멤버에 대한 액세스를 제한하여 캡슐화를 시행합니다. 그런데 다음 코드에서는 비공개 가시성에도 불구하고 다른 Person 개체의 account 필드에 액세스할 수 있는 이유는 무엇입니까?

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;
    }
}
로그인 후 복사

클래스 수준 액세스와 개체 수준 액세스

반대 객체 수준 액세스에 대한 기대에 따라 Java의 비공개 필드에는 클래스 수준 액세스 권한이 있습니다. 이 설계는 다음과 같은 이유에서 비롯됩니다.

  • 캡슐화:
    개인 수정자의 주요 목표는 클래스 내부에 대한 액세스를 제한하여 캡슐화를 보장하는 것입니다. 동일한 클래스의 객체가 서로의 상태를 임의로 수정할 수 있으므로 객체 수준 액세스는 이 목적을 무효화합니다.
  • 구현 독립성:
    클래스 수준 액세스를 사용하면 클래스 구현이 가능합니다. 외부 상호 작용에 영향을 주지 않고 변경합니다. 필드에 개체 수준 액세스 권한이 있는 경우 클래스 내부 구조를 변경하려면 참조하는 모든 개체에서 해당 수정이 필요합니다.
  • 내부 인식:
    코드 조각에서 두 가지 모두 개인 개체는 계정 필드를 포함하여 동일한 내부 구현을 갖습니다. 클래스 수준 액세스 권한을 가짐으로써 동일한 클래스 내의 객체는 서로의 내부 정보를 가정하고 그에 따라 작동할 수 있습니다.

결론:

클래스 수준 액세스 비공개 필드의 경우 캡슐화를 강화하고 구현 독립성을 보장하며 동일한 클래스 내의 개체 간 상호 작용을 촉진하는 의도적인 디자인 선택입니다. 반직관적으로 보일 수도 있지만, 이 디자인은 객체 지향 프로그래밍의 무결성과 유연성을 유지하는 데 필수적입니다.

위 내용은 같은 클래스에 있는 다른 개체의 비공개 필드에 액세스할 수 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿