본문 바로가기
C#/책 정리

C# 정리 ) 중첩 클래스

2021. 12. 5.

지금까지의 방법으로 모든 객체를 표현할 수 있기는 하다. 하지만 때때로 그것만으로는 부족할 때가 있다.

중첩 클래스는 클래스 내부에 클래스를 또 정의하는 것이다.

 

RPG게임의 직업들을 클래스를 지금까지의 방법으로 표현을 해보자

    class 전사
    {

    }
    class 사냥꾼
    {

    }
    class 도적
    {

    }

하지만 가만히 생각해보면 이 클래스들은 직업 안에 포함되어 있다.

그런데도 위와 같이 각각의 클래스를 나누어 정의하면 다른 클래스에서 사용될 가능성이 있다.

개발자가 실수할 여지를 남겨두는 것이다.

 

따라서 개념상으로 보면 다음과 같이 직업 내부로 정의를 제한하는 것이 더 올바를 수 있다.

    class 직업
    {
        class 전사
        {

        }
        class 사냥꾼
        {

        }
        class 도적
        {

        }
    }

C#에서 클래스의 경우 접근 제한자를 생략하면 기본적으로 internal 이 지정된다.

하지만 중첩 클래스의 경우 접근 제한자가 생략되면 private이 지정되어 외부에서 인스턴스를 직접 생성하는것이 불가능 해진다.

 

internal : 지정된 변수, 형식은 선언된 어셈블리 내에서만 접근 가능

 

직업.도적 돚거 = new 직업.도적();

해당 중첩 클래스는 이런식으로 객체를 만들 수 있는데, 이 때에는 접근 제한자를 public 으로 지정해 주어야 한다.

댓글