继承
Lua类的继承
假设有一个基类A:
A = {}
function A:new(o)
o = o or {}
setmetatable(o,self)
self.__index = self
return o
end
function A:funName()
print('A')
end
若想从这个类派生出一个子类B,以使其能打印出类名。则先需要创建一个空的类,从基类继承所有的操作:
B = A:new()
直到现在,B还只是A的一个实例。如下所示:
s = B:new()
B从A中继承了new,就像继承其他方法一样。不过这次new在执行时,它的self参数表示为B。因此,s的元表为B,B中字段__index的值也是B。s继承自B,而B又继承自A。当B重写funName()函数:
function B:funName()
print('B')
end
现在调用
s:funName()

浙公网安备 33010602011771号