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...