언리얼

이득우의 언리얼 프로그래밍 4 - 인터페이스

햄시나 2025. 4. 17. 21:06

인터페이스의 정의부터 알아보자.

인터페이스는 객체가 반드시 구현해야 하는 것을 지정할때 활용한다.

예를 들어 언리얼에서는 Actor(월드에 배치되는 모든 오브젝트)를 상속받은 Pawn(움직이는 오브젝트)이

반드시 INavAgentInterface를 구현하도록 되어있다.

 

그래서 저번 글에서 만들었던 Person 을 상속받아 만든 Student, Teacher가 있는 상황에서 Staff(교직원)을 추가해보자.

Staff는 수업에 참여해서는 안되고,  Student와 Teacher는 반드시 수업에 참여해야하는 점을 구분하여 인터페이스를 만들어보자.

 

cpp나 헤더 파일을 그대로 복붙해서, 가져와서 사용하는 방법에 대해서는 파트1의 7강 7분 정도에 설명되어있다.

 

인터페이스의 이름은 ILessonInterface, 가상함수로 지정한것에 대하여 상속받는 클래스들은 그 가상함수를 반드시 구현해야만 하는 강제성이 생긴다. 그런데 밑의 사진을 보자.

언리얼에서의 인터페이스는 가상함수(=추상타입)가 아니게 선언해도 된다.

그리고 저렇게 함수의 기능을 넣게 되면 상속받은 클래스들도 저 함수의 구현이 필수가 아니게 된다.

인터페이스를 활용하면 아래처럼 겉보기엔 기존 c++과 동일한 방식으로 다중상속을 한것 같지만,

인터페이스는 순수가상함수만 가진 구조라서 다중상속에서 일어났던 다이아몬드 상속 등과 같은 위험이 일어나지 않는다.

사실상 "기능 정의만 공유"하는 안전한 구조라서 다형성(polymorphism)을 사용하면서도 유지보수 가능한 구조가 된다.