프로그램을 제작하다보면, 클래스에 선언한 변수나 메서드에 접근하지 못하도록 막아야 할 경우가 있습니다.
이럴 때 사용하는 것이 접근 제한자이며, 상황에 맞는 접근 제한자를 사용하면 됩니다.
public: 어디에서나 접근 가능합니다.
private: 같은 클래스에서만 접근 가능합니다.
즉 private 접근제한자로 선언된 멤버변수나 메서드는 외부에 공개되지 않습니다.
protected: 파생클래스에서만 접근이 가능합니다.
public과 private은 프로그래밍에 입문할 때 가장 많이 쓰였고,
protected도 추상클래스 혹은 객체지향의 상속성을 적극적으로 이용할 때 많이 사용됩니다.
abstract public class Human : MonoBehaviour
{
// protected로 선언된 변수는 Human 클래스의
// 파생클래스에서만 사용가능합니다.
protected string humanName;
protected int humanAge;
// 가상 메서드: Base클래스에서 함수를 정의하였지만,
// 파생클래스에서 재정의하도록 하고 싶을 때 사용합니다
protected virtual void Info()
{
Print("나는 인간입니다.");
}
// 추상 메서드: 파생클래스에서 함수를 정의해야만 하는 함수입니다.
abstract protected void Name();
}
public class Student : Human
{
string schoolName;
void Start()
{
schoolName = "부산초등학교"
// 상속받았기 때문에 protected로 선언된 변수이지만 사용 가능
humanName = "서하진"
humanAge = 11;
Info();
}
protected override void Info() // 재정의
{
// base는 Human 클래스의 인스턴스를 가리키는 것입니다.
base.Info();
print("나는 학생입니다.");
// "나는 인간입니다."와 "나는 학생입니다."가 함께 출력됩니다.
}
private override void Name()
{
print(humanName);
}
}
'유니티 개발 기술 > 스크립팅 & 프로그래밍' 카테고리의 다른 글
유니티에서 협업할 때 사용할만한 어트리뷰트 (0) | 2023.10.13 |
---|---|
Instantiate vs PrefabUtility.InstantiatePrefab (0) | 2023.10.11 |
Update vs FixedUpdate (0) | 2023.07.31 |
GetComponent 함수 (0) | 2023.07.30 |
이벤트, 이벤트리스너, 이벤트핸들러, 콜백함수의 관계 (0) | 2023.07.29 |