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 중국어 웹사이트의 기타 관련 기사를 참조하세요!