목표
- 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;
}
}
'프로그래밍 > Unity C#' 카테고리의 다른 글
[Unity] Tutorial 06 - Intermediate Scripting (Access Modifiers) (0) | 2020.01.17 |
---|---|
[Unity] Tutorial 06 - Intermediate Scripting (Sealed) (0) | 2020.01.17 |
[Unity] Tutorial 06 - Intermediate Scripting (Virtual) (0) | 2020.01.17 |
[Unity] Tutorial 06 - Intermediate Scripting (Abstraction) (0) | 2020.01.17 |
[Unity] Tutorial 06 - Intermediate Scripting (Overriding) (0) | 2020.01.15 |