十七、接口
一.什么接口?怎么理解接口?
简单的说,接口提供一组公共的方法,不同的对象中继承这些方法后可以有不同的具体实现。(这不就是多态吗?)
用具体例子来解释:
上面代码中dog类和cat类,同样实现了IDamageable接口,它们都具备了受伤生命值减少的特性,只是他们受伤后的具体表现略有不同:狗直接死亡,猫复活9次后就死了(多态,不同的类对于接口的实现有所不同),但是他们最终都可能会因受伤过重而死亡(这里体现接口的约束力).
二.接口的意义
1.任何使用接口的类都必须实现这些接口。
2.实现解耦
如上方代码,Killer无需关心具体是对猫还是狗造成伤害:
对狗造成伤害,伤害值超过狗的生命值上限,狗会死亡
对猫造成伤害,伤害值超过猫的生命值上限,猫会减少一次复活机会然后重生.
这就体现了调用者(Kill)和实现者(dog,cat)之间并没有耦合,即不管我打的是谁,只要我打的够狠,不管他是谁,他都会死,区别是一枪死还是10枪死而已
3.解决多继承的问题
三.蓝图中的接口
蓝图的新建接口相当于定义接口,在一个蓝图类里面Add接口并且编写接口的逻辑相当于实现接口函数,在另一个类里面执行接口函数相当于调用接口
1.蓝图接口的创建与实现





2.蓝图接口调用



四.C++中的接口
1.UE的接口类创建接口



空白类创建接口


自定义接口格式:
#include "空类名.generated.h"
UINTERFACE(MinimalAPI)
class U自定义接口名:public UInterface
{
GENERATED_BODY()
};
class 项目名_API I与上面的自定义接口名一致
{
GENERATED_BODY()
public:
//在此处添加接口函数声明
};
空类自定义接口:MyNoonClassInterface
.h文件
.cpp文件


2.C++中声明接口函数
Cpp_Interface.h文件
Cpp_Interface.cpp文件
2.蓝图中实现接口函数与调用接口函数
新建一个蓝图类BP_ImpInterface(意思是蓝图实现接口函数)

①蓝图实现C++的接口函数


②蓝图调用蓝图实现C++的接口函数
新建蓝图类BP_ExecuteInterface



3.C++中实现接口函数与调用接口函数
①C++实现接口函数
新建一个继承与Actor的C++类:Cpp_ImpInterface(C++实现接口函数)
Cpp_ImpInterface.h文件
Cpp_ImpInterface.cpp文件
②C++调用接口函数
创建一个调用C++接口的类:Cpp_CallCppInterface
.h文件
.cpp文件
