继承

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()
输出的结果是B。
posted @ 2024-10-18 11:09  请明月  阅读(14)  评论(0)    收藏  举报