C#/.NET(10): 디폴트 접근 제어자는 무엇인가?
접근 제어자 리뷰
지난 포스팅에 접근 제어자에 대해 다루어보았는데, 다시한번 정리해보자면
- public : 모든 어셈블리, 클래스, 멤버에서 접근할 수 있음.
- internal : 같은 어셈블리에서만 접근할 수 있음.
- protected : 어떠한 어셈블리에 있든 상관없이 상속된 클래스면 멤버에 접근할 수 있음.
- protected internal : 같은 어셈블리 안에 있을 때는 internal로 기능하고, 다른 어셈블리에서는 protected로 기능함.
- private protected : 같은 어셈블리 안에서만 protected 처럼 기능하고, 다른 어셈블리에서는 접근할 수 없음.
- private : 같은 클래스에서만 접근할 수 있음.
디폴트 접근 제어자의 정의
디폴트 접근 제어자는 우리가 클래스나 타입을 정의할 때, 접근 제어자를 정의하지 않았을 경우 자동으로 부여되는 기본 접근 제어자이다.
그렇다면, 기본 접근 제어자는 어떻게 설정하는게 개발 후 어플리케이션의 정보 은닉에 유리할까?
정답은 정보 은닉에 있다. 그래서 가장 엄격한 접근제어자가 기본 접근 제어자일 수 밖에 없다.
네임스페이스레벨에서 가장 엄격한 접근 제어자는 internal 이고, 클래스레벨에서는 private 이다.
이 internal과 private이 기본 접근 제어자이다. 아래는 예시 코드이다.
[디폴트 접근 제어자 - 예시 코드]
아래 예시 코드는 ClassAtNamespaceLevel 의 접근 제어자인 private 은 class level 에서 할당이 가능하기 때문에, namespace level 에서 할당 시 오류가 발생한다.
using System;
namespace defaultAccessModifier
{
/*
private class ClassAtNamespaceLevel // private 은 class level, error 발생
{
}
*/
class ClassAtNamespaceLevel // internal
{
class InnerClass // private
{
}
}
}
댓글남기기