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())
以上就是本文所要分享的代码了,希望大家能够喜欢。