[C#] Interface

자몽이·2025년 7월 8일

C# 문법

목록 보기
2/12
post-thumbnail

Interface 문법에 대한 정리이다.

✅ Interface란?

인터페이스는 클래스가 구현해야 할 기능의 목록만 정의하는 일종의 약속 이다.

  • 인터페이스는 구현이 아니라 형태만 가지고 있다.
  • 메서드나 프로퍼티의 이름, 반환값, 인자만 정하고 로직은 정의하지 않는다.

예시코드


public interface IDamagealbe // 인터페이스 이름 앞에는 보통 I를 쓴다.
{
	void TakeDamage(int damage);
}

IDamageable는 "나는 데미지를 받을 수 있다" 라는 기능을 갖고 있는 객체 라고 명시하는 것이다.




모든 일에는 이유가 필요하다. 왜 사용해야 하는지 알아보자.

❔인터페이스 사용 이유❔

  1. 유연한 구조 설계
  • 서로 다른 클래스들이 공통 기능을 가지고 있어도, 상속 없이 구현 가능하다.
  • 적,플레이어 오브젝트 모두 데미지를 받을 수 있다면 -> IDamageable 인터페이스를 구현하면 된다.

  1. 느슨한 결합
  • 다형성을 극대화해서 구체 클래스가 아닌 인터페이스에 의존하도록 만든다.

  1. 테스트에 용이하다.

✅ 사용하기 좋은 상황

  1. 서로 다른 객체가 같은 기능을 해야 할 때. (공통 인터페이스로 통일 가능)
  2. 여러 클래스에게 동일한 책임을 줄 때. (상속보다 더 유연하게 관리 가능)
  3. 게임 오브젝트에 상호작용 기능을 붙일 때. (IInteractable 같은 패턴이 자주 등장)
  4. 행동을 외부에서 제어해야 할 때. ( 인터페이스 기반으로 전달하고 호출)

Unity에서 자주 쓰이는 예시
(데미지 입기, 상호작용, 이동 가능, 공격 가능, 프레임 또는 시간마다 동작)




⭐Unity 자체의 Interface⭐

Unity에서도 제공하는 인터페이스들이 존재한다.

IPointerClickHandler
IDragHandler
IBeginDragHandler / IEndDragHandler
IAnimationEventReceiver



이름을 보면 어떤 기능을 가지고 있을지 예상 되지만, 필요할 때 검색해서 사용하자.



마지막으로 짧은 예시

public interface IInteractable
{
    void Interact();
}

public class NPC : MonoBehaviour, IInteractable
{
    public void Interact()
    {
        Debug.Log("NPC와 대화합니다.");
    }
}

public class Chest : MonoBehaviour, IInteractable
{
    public void Interact()
    {
        Debug.Log("상자를 엽니다.");
    }
}



---느낀점---

구현 강제성, 복잡성 같은 단점이 존재 하지만, 사용법만 잘 숙지하고 능숙해 진다면 활용 방법이 무궁무진 할 것 같다. 상속과 비슷한 개념이 몇가지 존재 하는거 같다. 다음엔 상속에 대한 개념을 정리해 차이점을 정확히 알아보자.

profile
개발자가 되는 그 날 까지

2개의 댓글

comment-user-thumbnail
2025년 7월 8일

인터페이스를 잘 사용하면 좋을 것 같다는 말에 공감 백번합니다!

1개의 답글