접근 제어자 리뷰

지난 포스팅에 접근 제어자에 대해 다루어보았는데, 다시한번 정리해보자면

  • 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
		{

		}
	}
}

태그: ,

카테고리:

업데이트:

댓글남기기