C# 접근 제한자 (Access Modifier)

정용·2024년 5월 31일

접근제한자 🖐

C# 접근제한자에 대해 알아보자. 접근 제한자는 외부로부터 타입 (클래스, 구조체, 인터페이스, 델리게이트 등) 혹은 그 타입 멤버들

(메서드, 속성, 이벤트, 필드 등) 로의 접근을 제한할 때 사용하는 것으로 알려져있다.

다음은 어떤 종류가 있는지 살펴보자.👊

델리게이트는 나중에 뒤에서 자세히 설명할게유

접근제한자설명
Public모든 외부 (파생클래스 포함)에서 이 타입을 액세스 할 수 있다. (개별 타입 멤버의 액세스 권한은 해당 멤버의 접근 제한자에 따라 별도로 제한 될수도 있다.
internal동일한 Assembly 내에 있는 다른 타입들이 액세스할 수 있다. 하지만, 다른 어셈블리에서는 접근이 불가하다.
protected파생클래스에서 이 클래스 멤버를 엑세스할 수 있다.
private동일 클래스 / 구조체 내의 멤버만 접근 가능하다.

🖐
자 제한 접근자는 Public class A { } 와 같이 클래스, 구조체와 같은 Type 앞에 사용하거나 메서드, 속성, 필드, 등의 클래스 / 구조체 멤버 앞에 사용하여 접근을 제한하게 된다. ( 예시 : protected int GetValue( ); )

  • 클래스 멤버는 5가지의 제한 접근자를 모두 가질 수 있지만, ( public, internal, private, protected, protected internal )
    구조체 멤버는 상속되지 않으므로 3가지의 접근 제한자만 가질 수 있다. ( public , internal, private )

  • 보통 클래스와 구조체는 네임스페이스 바로 밑에 선언하는데, 이때 디폴트로 internal 접근 제한자를 갖는다.
    단, 클래스 내부에 Nested클래스를 선언하는 것과 같이 Nested Type을 선언하면 디폴트로 private이 접근 제한을 갖는다.

  • 인터페이스와 열거형 enum의 멤버는 기본적으로 public을 사용한다. 각 멤버의 별도의 접근 제한자를 사용하지 않는다.

접근 제한자 사용🔗

클래스의 필드는 기본적으로 private으로 설정하여 외부로부터의 접근을 완전히 제한하는 것이 일반적이다.

메서드는 외부에서 호출해야 하는 것은 public으로 하고 내부에서만 사용되는 것은 private으로 설정한다.

메서드는 이외에도 어셈블리 내부에서만 사용 가능한 internal, 파생클래스에서 액세스할 수 있는 protected를 사용할 수 있다.

속성은 메서드와 동일한 방식으로 ! ! !

이상이에유

profile
예예

0개의 댓글