초고교급 희망

[C#] 접근 제한자 본문

Game/C#

[C#] 접근 제한자

연모링 2022. 7. 22. 14:45
728x90

접근 제한자

public 아무나 다 사용할 수 있도록 한다. 클래스 내부 혹은 파생 클래스 외부에서도 클래스 멤버들에 접근이 가능하다.
private 이 private을 포함하는 클래스 내에서만 접근이 가능하다. 파생 클래스와 같은 클래스 외부에서는 이 접근 제한자로 되어있는 클래스 멤버에 접근할 수 없다.
protected  기본적으로 클래스 내부와 파생 클래스들 간에만 이 클래스 멤버를 사용할 수 있다. 파생 클래스라는 말은 상속 관계를 통해서 파생된 클래스라는 뜻으로, 상속 관계를 통해서도 해당 클래스 멤버를 이용할 수 있도록 하려는 의도를 가진다.
internal 이는 동일 어셈블리 내에서 접근이 가능하도록 하는 경우를 뜻한다.
protected internal protected 혹은 internal한 접근 제한자라는 의미이다. 동일 프로그램 내에서 혹은 해당 파생 클래스에서 해당 클래스 멤버를 이용할 수 있다는 의미를 가진다.

 

예시

public

class Class01
{
	public int i = 0;
}

Class01의 공개된 멤버 변수를 Class02에서는 자유로이 접근해 사용할 수 있다.

class Class02
{
	public static void Main()
    {
    	Class01 c = new Class01();
        c.i = 1000;
        System.Console.WriteLine("Class01.i = {0}", c.i);
    }
}

 

기본 접근 제한자

접근 제한자는 클래스 멤버에 명시하게 되는데, 이러한 접근 제한자를 명시하지 않는 다면, 기본 값으로 접근 제한자가 명시된다. 접근 제한자는 protected internal을 제외하고는 하나 이상의 접근 제어자들을 중복해서 선언하는 것은 오류이다.

아래 표는 각 클래스 멤버의 기본 접근 제한자와 허용되는 접근 제한자들을 정리한 것이다.

클래스 멤버 기본 접근 제한자 허용 접근 제한자
enum public 없음
class private public
protected
internal
private
protected internal
interface public 없음
struct private public
internal
private

만일에 기본 접근 제한자가 아닌 다른 접근 제한자를 적용하기 위해서는 클래스 멤버에 이 접근 제한자를 명시해야만 한다.

728x90

'Game > C#' 카테고리의 다른 글

[C#] Partial 클래스  (0) 2023.07.15
[C#] this 연산자  (0) 2022.07.22
[C#] Dictionary <TKey, TValue> 클래스  (0) 2022.07.20