접근 제한자 종류
변수(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)
- 외부에서 접근하면 안 되는 중요한 데이터
- 코드의 안전성을 높이고 싶을 때