본문 바로가기
프로그래밍/c#

c#_36 중첩 클래스 Nested class

by 지나팩 2021. 8. 1.

반복문이나 조건문의 중첩처럼 클래스 역시 중첩이 가능합니다.

클래스 안에 클래스~

예제에서 보듯 외부 클래스에 내부 클래스를 선언함으로써 중첩이 가능합니다. 활용 방법이야 다양하겠지만 비슷한 자원끼리 묶어서 관리하기 위해 사용하기도 합니다. 이렇게 함으로써 코드의 가독성 또한 올라가겠지요. 

OutClass내부에 선언된 InClass가 private으로 선언이 되어 OutClass와 InClass내에선 접근이 가능하고 InClass를 생성할수 있는 것을 볼 수 있습니다. 당연하게도 InClass내부의 private으로 선언된 height필드는 InClass내에서만 접근이 가능하기에 InClass의 Test메소드 내에선 접근이 불가능한 것 역시 볼 수 있습니다.

외부 클래스에선 InClass를 생성할 수 없습니다.

외부에서 InClass를 생성하고자 한다면 public으로 선언해주시면 됩니다.

 

만약 내부 클래스에서 외부 클래스에 접근하고자 한다면 내부에 외부 클래스를 선언하거나 외부에서 생성한 OutClass를 연결시켜주면 됩니다.

InClass내부에 OutClass 선언

 

위 예제는 OutClass 외부 클래스에서 생성 후 InClass생성 시 생성자에 매개변수로 넘겨주어 OutClass의 필드인 age의 값을 변경하는 것을 보실 수 있습니다.

댓글