내부 클래스가 전용 변수에 액세스할 수 있나요?
이 코드 예제에서 내부 클래스 Inner는 외부 클래스 Outer 내에 정의됩니다. . Inner 인스턴스가 생성되면 Outer 클래스의 전용 멤버 변수 var에 액세스할 수 있어야 합니다. 그러나 컴파일하면 Inner에 var이라는 멤버가 없다는 오류가 발생합니다.
Inner Classes and Member Access
C에서 내부 클래스는 친구로 간주됩니다. 외부 클래스의. 친구로서 내부 클래스는 전용 멤버를 포함하여 외부 클래스의 모든 멤버에 접근할 수 있습니다. 따라서 Inner의 인스턴스는 Outer의 전용 변수인 var에 접근할 수 있어야 합니다.
문제와 해결책
오류는 Outer 간의 연결이 부족하여 발생합니다. Inner 인스턴스와 Outer 인스턴스. Java에서는 내부 클래스와 해당 클래스를 둘러싸는 클래스 사이에 암시적인 부모-자식 관계가 있습니다. 그러나 C에서는 이 관계를 명시적으로 정의해야 합니다.
문제를 해결하려면 외부 클래스에 대한 참조를 내부 클래스의 생성자에 전달해야 합니다. 이는 외부 클래스의 멤버에 액세스하는 데 필요한 컨텍스트를 내부 클래스에 제공합니다.
다음은 부모-자식 연결을 설정하고 Inner가 Outer의 전용 변수 var에 액세스할 수 있도록 허용하는 방법을 보여주는 예입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
|
이 수정된 코드를 사용하면 Inner의 생성자가 var를 생성한 Inner와 Outer 인스턴스 사이에 부모-자식 관계를 설정하기 때문에 Inner가 var에 액세스할 수 있습니다. 입니다.
위 내용은 C의 내부 클래스가 외부 클래스의 Private 멤버에 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!