十七、接口
一.什么接口?怎么理解接口?
簡單的說,接口提供一組公共的方法,不同的對象中繼承這些方法后可以有不同的具體實現(xiàn)。(這不就是多態(tài)嗎?)
用具體例子來解釋:
上面代碼中dog類和cat類,同樣實現(xiàn)了IDamageable接口,它們都具備了受傷生命值減少的特性,只是他們受傷后的具體表現(xiàn)略有不同:狗直接死亡,貓復(fù)活9次后就死了(多態(tài),不同的類對于接口的實現(xiàn)有所不同),但是他們最終都可能會因受傷過重而死亡(這里體現(xiàn)接口的約束力).
二.接口的意義
1.任何使用接口的類都必須實現(xiàn)這些接口。
2.實現(xiàn)解耦
如上方代碼,Killer無需關(guān)心具體是對貓還是狗造成傷害:
對狗造成傷害,傷害值超過狗的生命值上限,狗會死亡
對貓造成傷害,傷害值超過貓的生命值上限,貓會減少一次復(fù)活機(jī)會然后重生.
這就體現(xiàn)了調(diào)用者(Kill)和實現(xiàn)者(dog,cat)之間并沒有耦合,即不管我打的是誰,只要我打的夠狠,不管他是誰,他都會死,區(qū)別是一槍死還是10槍死而已
3.解決多繼承的問題
三.藍(lán)圖中的接口
藍(lán)圖的新建接口相當(dāng)于定義接口,在一個藍(lán)圖類里面Add接口并且編寫接口的邏輯相當(dāng)于實現(xiàn)接口函數(shù),在另一個類里面執(zhí)行接口函數(shù)相當(dāng)于調(diào)用接口
1.藍(lán)圖接口的創(chuàng)建與實現(xiàn)





2.藍(lán)圖接口調(diào)用



四.C++中的接口
1.UE的接口類創(chuàng)建接口



空白類創(chuàng)建接口


自定義接口格式:
#include "空類名.generated.h"
UINTERFACE(MinimalAPI)
class ?U自定義接口名:public UInterface
{
? GENERATED_BODY()
};
class 項目名_API?I與上面的自定義接口名一致
{
? GENERATED_BODY()
public:
? //在此處添加接口函數(shù)聲明
};
空類自定義接口:MyNoonClassInterface
.h文件
.cpp文件


2.C++中聲明接口函數(shù)
Cpp_Interface.h文件
Cpp_Interface.cpp文件
2.藍(lán)圖中實現(xiàn)接口函數(shù)與調(diào)用接口函數(shù)
新建一個藍(lán)圖類BP_ImpInterface(意思是藍(lán)圖實現(xiàn)接口函數(shù))

①藍(lán)圖實現(xiàn)C++的接口函數(shù)


②藍(lán)圖調(diào)用藍(lán)圖實現(xiàn)C++的接口函數(shù)
新建藍(lán)圖類BP_ExecuteInterface



3.C++中實現(xiàn)接口函數(shù)與調(diào)用接口函數(shù)
①C++實現(xiàn)接口函數(shù)
新建一個繼承與Actor的C++類:Cpp_ImpInterface(C++實現(xiàn)接口函數(shù))
Cpp_ImpInterface.h文件
Cpp_ImpInterface.cpp文件
②C++調(diào)用接口函數(shù)
創(chuàng)建一個調(diào)用C++接口的類:Cpp_CallCppInterface
.h文件
.cpp文件
