您的位置:首页 > 编程语言 > Lua

lua实现多继承

2016-02-04 11:48 519 查看
http://my.oschina.net/u/156466/blog/401576
local class1 = {}
function class1:new()
local obj = {}
setmetatable(obj, {__index= class1})
return obj
end

function class1:print1()
print("class1:print()")
end

function class1:print2()
print("class1:print()")
end

local class2 = {}
function class2:new()
local obj = {}
setmetatable(obj, {__index= class2})
return obj
end

function class2:print2()
print("class2:print()")
end

local class3 = {}
function class3:new()
local obj = {}
setmetatable(obj, {__index= class3})
return obj
end

function class3:print2()
print("class3:print()")
end

function class3:print3()
print("class3:print()")
end

function super(k, list)
for i,v in ipairs(list) do
local ret = v[k]
if ret then
return ret
end
end
end

local class = {}
function class:new(...)
local obj = {}
-- local  base = {class1, class2}
local base = {...};
--t为调用的对象,k为方法名
setmetatable(class, {__index= function(t,k) return super(k, base) end})
setmetatable(obj, {__index = class})
return obj
end

local c = class:new(class2,class1,class3);
-- c:print1();
c:print2();
-- c:print3();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: