프로그래밍 농장

Override [ Unity ] 본문

Unity

Override [ Unity ]

Tennessee201 2022. 7. 11.
728x90

오버라이드란, 부모에서 만든 기능을 상속받은 자식에서 마음대로 덮어씌울수 있는것이다.

자식에서 오버라이드를 할때, 변수명(메서드명)과 타입은 동일해야한다. 

아래의 예시를 참고하자. 

ublic class BaseRotator : MonoBehaviour
{
    public float speed = 60f;


    void Update()
    {
        Rotate();
    }

    //자식들만 접근가능
    //virtual : 자식들이 이를 덮어씌울수있음  (대체가능) 
    protected virtual void Rotate()
    {
        transform.Rotate(speed * Time.deltaTime, 0, 0);
    }
}

위의 부모클래스 BaseRotator는 virtual이 붙은 protected 접근제어자의 Rotate() 라는 함수를 가지고있다.

이때 virtual은 자식들이 해당 메서드 혹은 변수를 오버라이드하여 기존의 값을 덮어씌울수 있다는 의미이다. 

 

이후  BaseRotator를 상속받은 ZRotator가 Rotate() 함수를 오버라이드하여 재선언하면 아래와 같이 된다. 

public class ZRotator : BaseRotator
{
    //오버라이드는 형식과 변수명이 똑같아야 한다.
    protected override void Rotate()
    {
        transform.Rotate(0, 0, speed * Time.deltaTime);
    }
}

 

 

ZRotator에서 오버라이드한 Rotate()함수는 해당 스크립트 내에서 오버라이드되어 사용이 가능하며, 물론 동시에 기존 부모클래스에서 작성된 Rotate() 함수의 내용그대로도 아래와 같이 사용이 가능하다. 

 protected override void Rotate()
    {
        base.Rotate();
    }
728x90

'Unity' 카테고리의 다른 글

유니티 이벤트 [ Unity ]  (0) 2022.07.11
Property [ Unity ]  (0) 2022.07.11
코루틴 [ Unity ]  (0) 2022.07.08
싱글톤 패턴 / 지연생성 [ Unity ]  (0) 2022.07.07
리스트 [ Unity ]  (0) 2022.07.07