>  기사  >  백엔드 개발  >  같은 클래스의 객체가 비공개 필드에 어떻게 액세스할 수 있나요?

같은 클래스의 객체가 비공개 필드에 어떻게 액세스할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-11-15 06:18:02674검색

How Can Objects in the Same Class Access Private Fields?

동일 클래스에 있는 객체의 프라이빗 필드에 액세스

Java에서 프라이빗 액세스 수정자는 필드 가시성을 필드가 속한 클래스로 제한합니다. 선언됩니다. 그러나 일반적인 오해는 이 제한이 동일한 클래스 내의 개체에 적용된다는 것입니다.

다음 예를 고려하십시오.

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;
  }
}

person.account에 액세스하는 것이 왜 가능합니까?

private 수정자는 외부 수정으로부터 객체의 내부 상태를 보호하기 위해 캡슐화를 시행합니다. 그러나 동일한 클래스 내에서 객체는 동일한 구현 세부 정보를 공유합니다. 그들은 클래스의 비공개 필드와 메서드를 알고 있습니다.

Artemix가 설명하는 것처럼:

"Person 구현이 바뀔 수 있기 때문에 '외부 세계'가 Person 내부 프로세스를 변경해서는 안 된다는 생각입니다. (그리고 구현의 차이를 수정하려면 전체 외부 세계를 변경해야 합니다. 이는 거의 불가능합니다."

동일 클래스 내의 개체는 동일한 구현 지식을 공유하므로 비공개 필드에 대한 액세스 권한을 부여합니다. 항상 클래스의 내부 상태에 올바르게 액세스하고 조작할 수 있도록 보장합니다. 구현이 변경되면 클래스 코드만 업데이트하면 되며 클래스 외부에서 코드를 수정할 필요가 없습니다.

따라서 OOP 설계에서는 비공개 필드가 객체 수준 액세스가 아닌 클래스 수준 액세스를 가질 수 있도록 허용합니다. 클래스 구현 내에서 일관성을 유지하면서 캡슐화를 용이하게 합니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.