접근 제한자 심화

C#의 접근 제한자(public, private)를 학습합니다. 각 제한자를 언제 사용하는지와 그 차이점을 이해합니다.

접근 제한자 종류

변수(variable)나 함수(function) 앞에 붙여서 어디서 사용할 수 있는지 정하는 키워드입니다.

public (공개)

  • 설명: 어디서든 접근 가능
  • Unity Inspector: 보이고 수정 가능
  • 다른 클래스(class): 접근 가능
public class Human : MonoBehaviour
{
    public string myName;  // Inspector에서 보임, 다른 클래스에서 접근 가능
    
    public void Eat() {   // 다른 클래스에서 호출 가능
        Debug.Log("먹는다");
    }
}

private (비공개)

  • 설명: 같은 클래스(class) 안에서만 사용 가능
  • Unity Inspector: 보이지 않음
  • 다른 클래스(class): 접근 불가능
  • 상속(inheritance)받은 클래스(class): 접근 불가능
public class Human : MonoBehaviour
{
    private int myAge;        // Inspector에서 안 보임, 다른 클래스에서 접근 불가
    private float myHeight;  // Inspector에서 안 보임
    
    private void Sleep() {    // 다른 클래스에서 호출 불가
        Debug.Log("잔다");
    }
}

접근 제한자 생략 시

  • 변수(variable)나 함수(function) 앞에 아무것도 안 쓰면: private과 동일하게 동작
  • C#의 기본값: 접근 제한자를 생략하면 자동으로 private이 됨
public class Human : MonoBehaviour
{
    int myAge;        // private과 동일 (생략 시)
    float myHeight;   // private과 동일 (생략 시)
    
    void PowerPush() {  // private과 동일 (생략 시)
        Debug.Log("싼다");
    }
}

접근 제한자 비교표

접근 제한자 같은 클래스(class) 자식 클래스(class) 다른 클래스(class) Unity Inspector
public ✅ 보임
private ❌ 안 보임
생략 ❌ 안 보임

언제 무엇을 사용할까?

public 사용

  • Unity Inspector에서 값을 설정하고 싶을 때
  • 다른 스크립트에서 접근해야 할 때
  • 자식 클래스(class)에서 사용해야 할 때

private 사용

  • 클래스(class) 내부에서만 사용하는 변수(variable)/함수(function)
  • 외부에서 접근하면 안 되는 중요한 데이터
  • 코드의 안전성을 높이고 싶을 때

← 목차로 돌아가기