05
16

프로그램을 제작하다보면, 클래스에 선언한 변수나 메서드에 접근하지 못하도록 막아야 할 경우가 있습니다.
이럴 때 사용하는 것이 접근 제한자이며, 상황에 맞는 접근 제한자를 사용하면 됩니다.

 

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);
	}
}

 

COMMENT