lua 類的繼承實現

2021-08-28 23:08:42 字數 985 閱讀 7438

1.lua 類中其實沒有類的概念,乙個類只是用乙個表(table)來管理的, 如果想要實現子類繼承父類,簡單來說就是把兩個表組到一起。

2.lua中提供了原表(metatable),可以通過原表來改變原來lua類的一些行為,比如把兩個表相加(a+b)

father =;

classfather.__index = classfather;

function classfather:new(name)

local o = ; -- 我從建立需要乙個新錶

setmetatable(0, classfather);

endfunction classfather:geta()

return self.a;

endreturn classfather;

子類實現 

local father = require("classfathe");

local classchild =,fathertable);

-- 拿到子類的例項(table)

return setmetatable(obj, )

end-- 覆蓋父類方法

function classchild:geta()

-- 呼叫父類已經被覆蓋的方法

local a = self.father.geta(self);

return a;

end-- 子類方法

function classchild:gerb()

return self.b

end呼叫實現 text.lua 

local father = require("classfathe")

local child = require("classchild")

local c = child:new()

-- 從father繼承的geta方法

c:geta();

-- child自己的方法。

c:getb();

lua實現類的繼承

local class function class super local class type class type.ctor false class type.super super class type.new function local obj do 遞迴呼叫建構函式,實現構造基類的資料...

lua 實現類 和 繼承

lua 實現類 繼承 需要以 table 表 的形式實現 table lua的資料結構之一 setmetatable a,b 設定a的元表為b 設定完元表之後 還要將 b的 index 指向自身 這樣的話 在a中查詢元素找不到的話,就會去b中查詢 如果b的 index沒有賦值,那麼及時b中存在也會返...

Lua類繼承的優雅實現方式

網上有一些lua類繼承的示例,但是無法實現方法覆蓋,同時能呼叫已經被覆蓋的父類的方法。這兒是博主自己琢磨的一種方式,測試用可。local m function m new name return setmetatable endfunction m show print self.name show...