동일 클래스에 있는 객체의 프라이빗 필드에 액세스
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!