목표

  • Interface에 대해서 알아보자

Interface

  • 인터페이스는 비추상 클래스 또는 구조체에 구현해야 하는 기능에 대한 선언이 포함되어 있다.
    • 이는 실제 동작에 대해 정의하는게 아니라, 공통 기능에 대한 목록만 선언하겠다는 뜻이다.
    • 예를 들어 게임에 등장하는 개, 돼지, 닭, 소의 동작을 정의하면 걷기, 앉기, 달리기, 정지, 점프, 데미지 받기, 죽음 등으로 나눌 수 있다.
interface IAnimalBehaviour
{
    bool Idle(); // 기본 행동
    bool Walk(); // 걷기
    bool Run(); // 뛰기
}
  • 위 예제와 같이 interface 키워드를 사용하여 인터페이스를 정의할 수 있다.
  • 인터페이스 네이밍 규칙에 따라 인터페이스 클래스의 시작은 대문자 I로 시작한다.
  • 인터페이스의 멤버는 기본적으로 public이다.
  • 인터페이스의 멤버에는 메서드, 프로퍼티, 인덱서, 이벤트 타입을 선언할 수 있다.

Interface의 예시

  • 역시나 동물의 기본 행동을 개와 새 클래스로 예로 들어보면 아래와 같다. (닭이지만)

  • 예시에 나타난 것 처럼, interface를 상속받은 클래스는 interface에서 선언한 멤버를 구현해야 한다.

    • 구현안하면 base로 동작하는 virtual과 헷갈리지말자.

닭의 행동 정의

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

public class Chicken : MonoBehaviour, IAnimalBehaviour
{
    public bool Idle()
    {
       // 닭의 보통 상태 구현
       return true;
    }

    public bool Run()
    {
        // 닭 뛰기
        return true;
    }

    public bool Walk()
    {
        // 닭 걷기
        return true;
    }
}

개의 행동정의

  • 개의 경우 닭과 다르게 길들이는 것이 가능하다고 할때, 아래와 같이 추가로 인터페이스를 구성할 수 있다.
interface ITameable
{
    bool DoTame();
}
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Dog : MonoBehaviour, IAnimalBehaviour. ITameable
{
    public bool Idle()
    {
       // 개의 보통상태 구현
       return true;
    }

    public bool Run()
    {
        // 개의 달리는 상태 구현
        return true;
    }

    public bool Walk()
    {
        // 개의 걷기 구현
        return true;
    }

    public bool DoTame()
    {
        // 개의 조련 구현
        return true;
    }
}

+ Recent posts