>Java >java지도 시간 >외부 Java 클래스가 내부 클래스 Private 멤버에 액세스할 수 있는 이유는 무엇입니까?

외부 Java 클래스가 내부 클래스 Private 멤버에 액세스할 수 있는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-07 19:42:181071검색

Why Can Outer Java Classes Access Inner Class Private Members?

Java의 중첩 클래스 액세스 권한

질문:

외부 Java 클래스가 내부 클래스 전용 멤버에 액세스할 수 있는 이유는 무엇입니까? 다음 코드 조각은 이 동작을 보여줍니다.

class ABC {
    class XYZ {
        private int x = 10;
    }

    public static void main(String... args) {
        ABC.XYZ xx = new ABC().new XYZ();
        System.out.println("Hello :: " + xx.x); // Why is this allowed?
    }
}

답변:

Java의 중첩 클래스는 바깥쪽 클래스의 권한을 상속합니다. 특히 내부 클래스는 외부 클래스의

  • 공개 및 보호 멤버
  • 패키지 전용 멤버
  • 중첩 클래스의 멤버를 포함한 전용 멤버
이 동작을 통해 내부 클래스는 외부 클래스와 밀접하게 연결된 기능을 캡슐화할 수 있지만 가독성과 유지 관리 목적을 위해 분리합니다.

내부 클래스는 본질적으로 외부 클래스의 멤버이므로 비공개로 표시된 멤버를 포함하여 해당 멤버에 액세스할 수 있습니다. 이 액세스 권한은 내부 클래스가 다음과 같은 이유로 부여됩니다.

    외부 클래스와 동일한 파일 및 패키지에 상주
  • 외부 클래스의 기능과 긴밀하게 결합됨
  • 코드를 체계적으로 정리하고 분리하는 방법을 제공하세요
따라서 위의 코드 조각은 다음과 같은 이유로 유효합니다. 내부 클래스 XYZ는 외부 클래스 ABC의 전용 멤버 x에 액세스할 수 있습니다. 이는 동일한 클래스 선언에 서로 밀접하게 관련되어 있고 함께 캡슐화되어 있기 때문입니다.

위 내용은 외부 Java 클래스가 내부 클래스 Private 멤버에 액세스할 수 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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