[TIL] Unity - 상속(Inheritance) & 다형성(Polymorphism) - day 66

뭉크의 개발·2023년 10월 20일
0

Unity - Camp

목록 보기
35/70
post-thumbnail

🐧 들어가기 앞서

상속과 다형성에 대해 공부를 진행했다.

상속을 잘못 사용하는 복잡도를 높일 수 있다. 공통 기능이 아닌 개별 기능까지 부모 클래스에 포함시키면 코드가 불필요하게 복잡해질 수 있다.

또한 다형성 없는 코드 즉, 모든 객체를 독립적으로 처리하려고 하면 비슷한 로직을 반복해서 작성해야할 가능성이 높다. 중복 코드를 많이 생성하고 유지보수를 어렵게 만든다.


🐧 오늘 배운 것

  1. 상속

  2. 다형성


🐧 기억할 것 & 진행

상속(Inheritance)이란?

상속은 객체 지향 프로그래밍의 핵심 원칙 중 하나로, 한 클래스의 속성과 메서드를 다른 클래스가 받아들이는 것을 말한다.
이렇게 함으로써 코드의 재사용성이 향상되고, 유지보수가 용이해진다.

  • Unity에서는 MonoBehaviour를 상속받아 게임 오브젝트에 부착할 컴포넌트를 정의한다.
  • MonoBehaviour 자체가 Unity 엔진에 내장된 기능(예: Start(), Update())을 가지고 있으므로, 이러한 기능을 사용하기 위해서는 MonoBehaviour를 상속받아야 한다.

다형성(Polymorphism)이란?

  • 다형성은 객체 지향 프로그래밍의 또 다른 핵심 원칙으로, 하나의 타입(클래스 또는 인터페이스 등)이 여러 형태로 동작하는 것을 말한다.

  • 즉, 부모 클래스 타입의 참조 변수를 사용하여 자식 클래스의 인스턴스를 참조할 때, 오버라이딩된 메서드는 자식 클래스의 버전이 호출되는 등 같은 이름의 메서드가 서로 다른 클래스에서 서로 다르게 동작할 수 있다.

Unity와 C#에서는 인터페이스와 추상 클래스 등을 활용하여 다형성을 구현할 수 있다.

예제

예를 들어, 게임 내에 여러 종류의 적들이 있다고 가정해본다.

각 적은 공격 방식은 달라도 모든 적들은 플레이어에게 피해를 줄 수 있는 공통적인 특징인 '공격' 기능을 가지고 있다.

csharp
public abstract class Enemy : MonoBehaviour
{
    public abstract void Attack();
}

public class MeleeEnemy : Enemy
{
    public override void Attack()
    {
        Debug.Log("Melee attack!");
        // Implement melee attack here...
    }
}

public class RangedEnemy : Enemy
{
    public override void Attack()
    {
        Debug.Log("Ranged attack!");
        // Implement ranged attack here...
    }
}

위 코드에서 Enemy는 모든 적들의 공통적인 특징을 나타내는 추상 클래스다.
이 클래스를 상속받은 MeleeEnemy와 RangedEnemy 클래스는 각각 '근접 공격'과 '원거리 공격'을 구현한다.

이처럼 상속과 다형성을 활용하면, 동일한 인터페이스를 가지면서도 서로 다른 기능을 가진 여러 종류의 객체를 효율적으로 관리할 수 있다.

결론

상속과 다형성은 객체 지향 프로그래밍의 중요한 원칙으로, 코드의 재사용성과 유연성을 높인다.
Unity에서 C#을 사용하여 게임 개발할 때에도 이 원칙들은 그대로 적용되며, 이를 통해 더 효율적이고 관리하기 쉬운 코드를 작성할 수 있다.


🐧 내일 할 일

  • 프로젝트 마감

0개의 댓글