C# 중첩 클래스란?
중첩 클래스(Nested Class)는 다른 클래스 내부에 선언된 클래스를 의미합니다. 중첩 클래스는 자신을 감싸고 있는 외부 클래스(Enclosing Class)의 멤버로 취급되며, 반대로 외부 클래스의 멤버는 중첩 클래스의 멤버에 직접 접근할 수 없다는 점이 특징입니다.
즉, 두 클래스는 서로 독립적인 접근 규칙을 가지며, 중첩 클래스에 접근하려면 외부 클래스 이름을 통해 명시적으로 참조해야 합니다.
중첩 클래스 예제 코드
다음은 C#에서 중첩 클래스를 선언하고 사용하는 방법을 보여주는 코드 예제입니다.
class One {
public int num1;
public class Two {
public int num2;
}
}
class Demo {
static void Main() {
One a = new One();
a.num1++;
One.Two ab = new One.Two();
ab.num2++;
}
}코드 설명
위 예제에서 Two 클래스는 One 클래스의 선언부 안에 포함되어 있으므로 중첩 클래스입니다. 이처럼 클래스 Two는 클래스 One의 내부에 선언된 형태로 정의됩니다.
클래스 Two는 public 접근 한정자를 가지고 있기 때문에, 클래스 One의 범위(Scope)를 벗어난 외부 영역에서도 접근할 수 있습니다. 그래서 Demo 클래스의 Main 메서드에서 One.Two와 같이 외부 클래스 이름을 한정자로 사용하여 중첩 클래스의 인스턴스를 생성할 수 있습니다.
중첩 클래스 사용 시 주요 특징
- 중첩 클래스는 외부 클래스의 멤버로서 캡슐화를 강화하는 데 유용합니다.
- 접근 한정자가
private라면 외부 클래스 내부에서만 사용 가능합니다. - 인스턴스 생성 시에는
외부클래스이름.중첩클래스이름형식으로 참조해야 합니다.