C#/클래스와 객체지향

C# 클래스와 객체지향 - 06. 접근 제한자

tita 2024. 5. 28. 15:25

C#은 접근 제한자가 굉장히 많습니다. 일단 대표적인 접근자에 대해서만 알아보겠습니다.

  • private
  • public

 

[private 접근 제한자]

우선 private 접근 제한자에 대해 알아보겠습니다. 접근 제한자를 입력하지 않았을 경우 자동으로 private 접근 제한자가 설정됩니다.

static void Main(string[] args)
{
}

 

Main 함수는 접근 제한자를 설정하지 않았으므로 private 접근 제한자가 설정된 메서드입니다.

 

private 접근 제한자가 설정된 메서드를 외부나 내부 클래스에서 접근하는 예제를 살펴보겠습니다.

 

class Test_out
{
    // Program.Main 은 private 이기 때문에 Program 클래스 외부에서는 접근할 수 없습니다.
    // 따라서 이 코드를 실행하면 에러가 발생합니다.
    public void TestMethod_out()
    {
        Program.Main(new string[] { "" });
    }
}

class Program
{
    class Test_in
    {
    	// Program 클래스 내부에 Test_in 클래스가 있기 때문에 접근이 가능합니다.
        public void TestMethod_in()
        {
            Program.Main(new string[] { "" });
        }
    }
    
    
    // Program 클래스 내부에서 Main 을 호출했기 때문에 접근이 가능합니다.
    public void TestMethod()
    {
        Program.Main(new string[] { "" });
    }
    
    static void Main(string[] args)
    {
    
    }
}

 

 

 

[public 접근 제한자]

다른 클래스에서 Main() 메서드를 호출하기 위해서는 접근 제한자 자리에 public 을 붙여서 공개 상태로 만들어주면 됩니다. 접근 제한자를 제외하고는 아까와 같은 코드지만 이번에는 에러가 발생하지 않습니다.

class Test_out
{
    // 이번엔 접근 제한자가 public 이기 때문에 에러가 발생하지 않습니다.
    public void TestMethod_out()
    {
        Program.Main(new string[] { "" });
    }
}

class Program
{
    public static void Main(string[] args)
    {
    
    }
}