유니티 상속

이인혁·2024년 9월 11일
0

유니티

목록 보기
19/20

유니티에서 사용하는 언어는 C#입니다. C#은 객체지향 언어입니다. 객체지향 언어에서 핵심적인 개념중에 하나가 상속입니다. 따라서 상속은 C#에서 중요한 개념입니다.

상속이란?

다른 클래스에 정의된 동작을 재사용, 확장 수정하는 새 클래스를 만드는 것입니다. 유니티 C#의 상속은 C++과는 다르게 하나의 부모클래스만 가질 수 있습니다. 즉, 부모클래스는 C++과 같이 많은 자식클래스들을 만들 수 있지만 자식클래스는 하나의 부모클래스만 상속받을 수 있습니다. 예외로 Interface클래스는 개수와 상관없이 상속 가능합니다.

접근제한자

  • public : 외부와 자식 클래스 둘 다 접근 가능

  • protected : 자식 클래스만 접근 가능

  • private : 외부와 자식 클래스 둘 다 접근 불가능

따라서 상속을 할 때 자식클래스가 쓸 함수이면 접근제한자를 protected로 설정하는게 좋습니다.

가상 함수

보통 자식들이 같은 기능을 하되 성질이 다를 때 부모클래스를 두고 상속받게 합니다. 그 때 같은 기능을 하는 함수를 가상함수로 만들어 상속받는 자식클래스가 정의하고 사용할 수 있게합니다. 부모클래스에서 가상함수를 만들때 접근제한자 뒤에 virtual을 붙이고, 자식클래스에서 가상함수를 상속받을때 접근제한자 뒤에 override를 붙여 사용합니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ParentClass : MonoBehaviour
{
	protected virtual void VirtualFunction () 
    {
    	
    }
}

public class ChildClass : ParentClass
{
	protected override void VirtualFunction () 
    {
    	Debug.Log("가상 함수");	
    }
}

인터페이스(Interface)

클래스나 구조체와 관계있는 기능에 대한 정의만 가지는 것입니다. 인터페이스의 성질은 3가지가 있습니다.

  • 변수가 없습니다.

  • 함수는 선언만 있습니다. => 자식클래스에서 반드시 별도의 구현이 필요합니다.

  • 클래스가 상속 받을 수 있습니다. => 개수 제한이 없습니다.

인터페이스는 조금 다르지만 가상함수만을 가지고 있는 클래스라고 생각하시면 됩니다. 따라서 저는 인터페이스를 기능을 구현하고 그 기능을 사용하는 클래스에게 상속시킵니다. 인터페이스도 코드의 가독성이 좋아지고 간결해지기 때문에, 알아두시면 좋습니다.

profile
게임개발공부블로그

0개의 댓글