Lua 多重繼承

2021-06-20 19:21:22 字數 1150 閱讀 2634

--從 處開始function sertchfield( parents ,k)

for i,v in pairs(parents) do

local result =v[k]--遍歷parents= 裡的每個元素,查詢乙個鍵為k的成員(例如 fly ,onfoot) --這裡找到了 fly onfoot 就返回 找不到 就 返回 nil 了

if result then

return result

endend

endfunction extends(...)

local cls={}--繼承了 parents= 裡的類的新類

local parents=

--在新類裡面找不到的成員 將按照sertchfield 的規則去找

setmetatable(cls,)

--這裡設定cls 的__index ,當o 例項找不到成員 會進入__index 設定的表查詢 當cls 也查不到就會按照sertchfield查詢

cls.__index=cls

function cls:new(o)--為新類構造 構建函式

o=o or {} --設定元表 ,在o 例項找不到的 成員 將會到cls 新類裡面去找 但是 cls 的__index還沒有設定, --因此在上面別忘了設定cls的__index 在處

setmetatable(o,cls)

return o

endreturn cls

end--會飛的行為

flyaction={}

function flyaction:fly()print("flying ")

end--會走的行為

onfootaction ={}

function onfootaction:onfoot()print("on foot ")

end--構建 乙個新類

twoaction = extends( flyaction ,onfootaction)

--例項化乙個新類 進入

anim=twoaction:new()

--print(anim.kk)

anim:fly()

anim:onfoot()

多重繼承 C 中的多重繼承

多重繼承是c 的一項功能,其中乙個類可以從多個類繼承。繼承類的建構函式以它們繼承的相同順序被呼叫。例如,在以下程式中,在a的建構函式之前呼叫b的建構函式。include using namespace std class a class b class c public b,public a not...

Lua的物件導向 多重繼承 私密性

本文 於 在lua中的多重繼承和私密性可能用得比較少,也可能只是我個人用得比較少。本來想偷懶不寫這文章的,因為我今天剛買了個漂移板,連起步都還沒學會啊,想多學一會。咳咳,本著堅持不懈 負責到底的態度,我還是決定隨便寫幾句 小若 隨便寫幾句是幾噸意思啊?我發現這些高 shen 智 jing 商 bin...

多重繼承(菱形繼承)

多重繼承 經典的是菱形繼承,如圖。菱形繼承將會產生的問題 把基類a中的成員變數通過b和c兩次繼承至d。d的繼承結構 可以看到,ma被繼承兩次至d 那麼將如何解決這個問題呢?採用虛繼承的方法,將基類a中的ma直接繼承至d。如下 class a int ma class b virtual public...