Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#.NET 액세스 한정자(Access Specifier)의 종류와 특징 완벽 정리

C#에서 액세스 한정자(Access Specifier)는 클래스의 멤버 변수와 메서드에 대한 접근 범위를 제어하는 키워드입니다. 이를 통해 코드의 보안성을 높이고 캡슐화(Encapsulation) 원칙을 실현할 수 있습니다. C#.NET에서 지원하는 대표적인 액세스 한정자는 다음과 같습니다.

1. Public(공용) 액세스 한정자

public으로 선언된 멤버는 동일한 프로젝트뿐 아니라 외부 어셈블리를 포함한 모든 클래스와 객체에서 자유롭게 접근할 수 있습니다. 주로 외부에 공개해야 하는 API나 공통 기능에 사용됩니다.

2. Private(전용) 액세스 한정자

private으로 선언된 멤버는 같은 클래스 내부에서만 접근할 수 있으며, 외부 함수나 객체에서는 접근이 불가능합니다. 클래스 내부 구현 세부 사항을 숨기고 싶을 때 사용하며, C#에서는 별도의 한정자를 명시하지 않으면 클래스 멤버가 기본적으로 private로 설정됩니다.

3. Protected(보호됨) 액세스 한정자

protected로 선언된 멤버는 해당 클래스 자신과 이를 상속받은 파생 클래스(자식 클래스)에서만 접근할 수 있습니다. 상속 관계에서 부모 클래스의 멤버를 자식 클래스가 사용할 수 있도록 허용하면서, 외부에는 노출하지 않고자 할 때 유용합니다.

4. Internal(내부) 액세스 한정자

internal로 선언된 멤버는 동일한 어셈블리(Assembly) 내부의 모든 클래스와 객체에서 접근할 수 있지만, 다른 어셈블리에서는 접근할 수 없습니다. 하나의 라이브러리나 프로젝트 내부에서만 사용되는 기능을 정의할 때 적합합니다.

5. Protected Internal(보호된 내부) 액세스 한정자

protected internal은 protected와 internal의 특성을 결합한 한정자입니다. 동일한 어셈블리 내의 모든 코드에서 접근할 수 있으며, 어셈블리가 달라도 해당 클래스를 상속받은 파생 클래스라면 접근이 가능합니다. 즉, 같은 애플리케이션 내부 또는 자식 클래스에 한해서만 멤버를 공개하고 싶을 때 사용합니다.

액세스 한정자 비교 요약

한정자같은 클래스파생 클래스같은 어셈블리외부 어셈블리
publicOOOO
privateOXXX
protectedOOXX
internalOOOX
protected internalOOO파생 클래스만 O

각 액세스 한정자의 특성을 정확히 이해하고 적절히 활용하면, 클래스 간의 의존성을 줄이고 안전하고 유지보수하기 쉬운 코드를 작성할 수 있습니다.