2014-12-10 2 views
1

Java에서 두 클래스가 하나의 최상위 클래스 내에 정의되어 있으면 서로의 개인 멤버 (필드, 생성자, 메서드)에 액세스 할 수 있습니다. 따라서 다음과 같은 상황에서는 ClassA의 모든 비공개 멤버를 ClassB 안에 사용할 수 있으며 그 반대의 경우도 마찬가지입니다.다른 클래스에서 전용 멤버에 액세스

public class TopLevelClass { 

    private static class ClassA { 
     // Code omitted 
    } 

    private static class ClassB { 
     // Code omitted 
    } 
} 

C#에서 비슷한 작업을 수행 할 수 있습니까?

답변

2

C#에서 중첩 된 클래스가 있더라도 클래스가 서로 중첩되어 있지 않아도 클래스는 서로의 개인 멤버에 액세스 할 수 없습니다 (부모를 공유하더라도). 그러나 일 수 있습니다. 그러나 부모 클래스의 전용 멤버에 액세스하십시오.

정말 필요한 경우 리플렉션을 사용하여 비공개 멤버에 액세스 할 수 있습니다. 액세스 권한이 필요하다면 처음에는 private이 아니어야합니다.

자세한 내용은 Nested Types을 참조하십시오.

+0

downvoter가주의를 기울이시겠습니까? – BradleyDotNET

+0

감사합니다. 나는 그것이 답이라고 생각했다. 나는 방금 확인을 원했다. Java에서 정말 유용한 한 가지 접근법은 정의 된 최상위 클래스에만 사용되는 도우미 클래스를 작성하는 것입니다.이 클래스의 경우 모든 것을 비공개로 만들 수 있으며 접근 자 메서드를 작성하는 것에 대해 걱정할 필요가 없습니다. . –

+0

@pbabcdefp 항상 자동 속성이 있습니다. :) – BradleyDotNET

관련 문제