본문 바로가기

Programming/Unity - Reference

[Unity C# Reference] Interface Class

인터페이스 클래스 : 해당 클래스를 상속받는 모든 클래스에게 인터페이스 클래스 내부의 함수 및 변수를 필수적으로 선언하여 포함하도록 강제하는 장치.


이로 인해 해당 인터페이스 클래스를 상속받은 클래스들은 그 클래스가 어떤 클래스인지를 따질 필요 없이 인터페이스 클래스 내부에 있는 함수는 바로 가지고올 수 있다 (반드시 만들어야하므로, 반드시 포함되어 있기 때문)


Interface Class의 선언


1
2
3
4
public interface I_item //헤더도 필요 없이 바로 이대로 선언한다
{
    void Use(); //여기 써있는 클래스 내부 함수는 상속받은 Child들은 
무조건 생성해야 한다
}
cs

단, 인터페이스 클래스의 경우 함수를 선언까지만 할 뿐 함수 내부 기능을 만들진 않는다. 따라서 이것을 사용하는 자식 클래스들은 인터페이스에 선언된 함수 자체는 반드시 포함하고 있어야 하지만, 그 내용은 각 클래스의 기능별로 상이하게 꾸밀 수 있다.


Interface Class의 상속 및 활용


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Check_Interface : MonoBehaviour {
 
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        
    }
 
    private void OnTriggerEnter(Collider other)
    {
        //아이템 하나하나를 전부 다 체크할거없이 I_item 인터페이스 상속여부만 체크
        I_item item = other.GetComponent<I_item>();
        if(item != null//I_item 인터페이스로써 리턴이 되면(상속이 된 놈이면)
        {
            item.Use(); //Use를 실행할것 (I_item 인터페이스에 강제된 함수이므로 무조건 존재)
        }
    }
}
cs



이런식으로 하나의 속성 (item들 , monster들 등등)을 통째로 묶어서 처리가 가능함. 이게 아니었으면 아이템마다 (이게 돈이면 코인 올리고 이게 회복템이면 회복하고 이게 몹이면 데미지 입고 등등...) 처리를 일일히 다 해줘야할 것.


'Programming > Unity - Reference' 카테고리의 다른 글

[Unity C# Reference] Properties  (0) 2018.06.11
[Unity C# Reference] Abstract Class  (0) 2018.06.11
[Unity C# Reference] Physics.Raycast  (0) 2018.06.11
[Unity C# Reference] Transform  (0) 2018.06.11
[Unity C# Reference] CoRoutine  (0) 2018.06.10