Lua实现类继承
mulInherit.lua
--[[
author:looyer@sina.com
date:2014/7/18
purpose:lua的继承演示
--]]
---baseclass"Object"
localObject={_t="Object"}
functionObject:new(id)
localo=
{
_id=id
}
setmetatable(o,self)
self.__index=self
returno
end
functionObject:type()
returnself._t
end
functionObject:id()
returnself._id
end
---class"Widget"driverfrom"Object"
localWidget={_t="Widget"}
setmetatable(Widget,Object)
functionWidget:new(id)
localo=
{
_id=id,
}
setmetatable(o,self)
self.__index=self
--function(tb,key)
-- returnself[key]
--end
returno
end
--functionWidget:id()
-- returnself._id
--end
---class"Drawor"driverfrom"Object"
localDrawor={_t="Drawor"}
setmetatable(Drawor,Object)
functionDrawor:new(id,name)
localo=
{
_id=id,
_name=name,
}
setmetatable(o,self)
self.__index=self
returno
end
functionDrawor:name()
returnself._name
end
---class"DrawPlane"driverfrom"Widget"and"Drawor"
localDrawPlane={_t="DrawPlane",_father={Widget,Drawor}}
functionDrawPlane:new(id)
localo=
{
_id=id,
}
setmetatable(o,self)
self.__index=
function(tb,key)
ifself[key]thenreturnself[key]end
for_,vinpairs(self._father)do
ifv._t==keythenreturnvend
ifv[key]thenreturnv[key]end
end
end
returno
end
localvarA=Object:new()
localvarB=Widget:new(10)
localvarC=Drawor:new(30,"dwr")
localvarD=DrawPlane:new(51)
print("varAtype:",varA:type())
print("varBtype:",varB:type())
print("varB._id:",varB._id,varB:id())
print("varCname:",varC:name())
print("varDtype:",varD:type())
print("varDid:",varD:id())
print("varDfatherWidget--",varD.Widget:type())
以上就是本文所要分享的代码了,希望大家能够喜欢。