자식 클래스가 반드시 구현해야할 “행동”을 지정하는데 활용되는 클래스.
ex. 참새, 뱁새 클래스를 만든다면 새는 “날아가기”라는 행동을 하기에
새 인터페이스를 만들어서 Fly() 함수를 만들고
참새, 뱁새 클래스가 새 인터페이스를 상속 받아서 Fly() 함수를 정의하게끔 강제함.
다형성의 구현, 의존성이 분리된(Decouple) 설계에 유용하게 활용됨.
ex. 새의 주인 클래스가 있고 주인이 새를 날린다고 가정.
주인 클래스는 무슨 새인지, 새가 어떻게 날아가는지는 상관없음.
그저 날아가기만 하면 됨. 그래서 새 인터페이스의 Fly() 함수를 통해서 새와 연결.
이를 통해, 참새 혹은 뱁새 클래스 내에서 문제가 생겨서 수정하더라도
새 인터페이스가 바뀌지 않는 한, 새 주인 클래스는 재컴파일 되지 않음.
참새 클래스 - 새 인터페이스 - 새 주인 클래스
인터페이스를 생성하면 두 개의 클래스가 하나의 파일에 작성되어 있음.
U로 시작하는 타입 클래스와 I로 시작하는 인터페이스 클래스.
런타임에서 클래스 타입 정보를 제공할 때는 타입 클래스,
개체를 설계할 때는 인터페이스 클래스를 사용함.
실제로는 타입 클래스를 거의 사용하지 않음.
또, 다른 언어와 다르게 Unreal C++ Interface에는 선언과 동시에 정의가 가능.