코딩의 신 35

김동관·2025년 11월 20일
post-thumbnail

오늘은 인터페이스 위주로 알려드리겠습니다.

인터페이스 정의는 **“어떤 클래스가 반드시 가져야 하는 함수(기능)를 약속만 해두는 것”
즉, 내용(로직)은 없고, 형태(함수 이름/매개변수)만 정의하는 것.

인터페이스 정의란?
✔ 1) 함수의 '기본 틀'만 미리 정해둔 것

예:public interface IDamagable
{
void TakePhysicalDamage(float amount);
}
“나를 맞출 수 있는 객체들은 반드시 TakePhysicalDamage() 함수를 구현해야 한다”
라는 규칙(약속)을 정의하는 것.

이거는 IDamagable입니다. 이걸 인터페이스로 만들어서 damage관련을 상속받게 만들어줍니다.
업로드중..

✔ 2) 상속받는 클래스들이 실제 기능을 구현한다


public class Player : MonoBehaviour, IDamagable
{
    public void TakePhysicalDamage(float amount)
    {
        // 플레이어가 데미지 받는 실제 로직
    }
}

public class Monster : MonoBehaviour, IDamagable
{
    public void TakePhysicalDamage(float amount)
    {
        // 몬스터가 데미지 받는 실제 로직
    }
}

➡ 각 클래스는 같은 이름의 함수를 구현하지만, 동작은 다르게 짤 수 있음

✔ 3) 인터페이스를 쓰는 이유

공격자가 “저 대상이 플레이어인지 몬스터인지” 몰라도 됨

그냥 IDamagable 있으면 데미지 주기 가능

if (hit.TryGetComponent(out IDamagable target))
{
    target.TakePhysicalDamage(damage);
}

➡ 코드가 엄청 깔끔해짐
➡ 서로 다른 객체들이 동일한 방식으로 상호작용 가능

정리

인터페이스 정의 = “특정 기능을 반드시 구현하라는 약속을 적어놓은 것”

내용 없음

형태만 있음

누가 상속받든 그 기능을 만들어야 함

객체 타입을 몰라도 공통된 기능 호출 가능

profile
아이디어 뱅크

0개의 댓글