using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 인터페이스 : '어떠한 메소드가 여기 있기로 했습니다' 라고 약속하는 것.
// class를 만드는 것이 아니라 약속을 만드는 것.
// 클래스와 구분하기 위해서 public interface 'I'- 라는 대문자를 앞에 붙이는 관습
// interface는 메소드들의 이름으로만 구성되어 있다.
// 다른 class에서 기능 구현을 해야됨.
// class 같은 경우에는 : Monobehavior와 같이 상속할 class를 적지만, 이 자리에 interface를 적으면, '이 interface를 구현하겠습니다' 라는 뜻.
// interface를 가지는 해당 class는 interface 내에 있는 메소드를 해당 class에서 실제 기능을 가지게 된다.
public interface ITurnOnable
{
// 전원 기능이 존재한다는 약속을 하는 것.
public void TurnOn();
public void TurnOff();
}
============================================================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TV : ITurnOnable // ITurnOnable 인터페이스를 따름
{
public void TurnOff()
{
Debug.Log("전원 버튼을 한 번 더 눌려");
}
public void TurnOn()
{
Debug.Log("전원 버튼을 한 번 눌러");
}
}
============================================================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Car : Animal, ITurnOnable // 동물이자, 온오프 기능이 있는 물건이 되는 것. (ITurnOnable 인터페이스를 따름) ==> 다중상속
// 상속도 받고, 인터페이스도 구현하고.
{
public void TurnOff()
{
Debug.Log("차 키를 돌려서 뽑아");
}
public void TurnOn()
{
Debug.Log("차 키를 열쇠구멍에 넣고 돌려");
}
public override void Fly()
{
Debug.Log("밴~~신~~~"); // 변신해서 날기
}
}
============================================================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HelloWorld : MonoBehaviour
{
private void Start()
{
Car porsche = new Car();
porsche.TurnOn(); // 포르쉐 시동 켜기
porsche.TurnOff(); // 포르쉐 시동 끄기
ITurnOnable someCar = new Car(); // 인터페이스를 타입명으로 쓸 수 있음.
someCar.TurnOn(); // someCar는 뭔지는 모르겠지만 켤 수 있는 물건이 되는 것임.
}
}
댓글