Oop Lua继承与方法
如何从类Oop Lua继承与方法,oop,inheritance,lua,love2d,Oop,Inheritance,Lua,Love2d,如何从类actor继承新类player,并使用相同参数在方法player:new(x,y,s)中调用方法actor:new(x,y,s)。我需要使player:new相同,但具有附加参数,以便player比actor具有更多属性 有没有办法不仅在new方法中,而且在其他方法中,比如player:move(x,y)将调用actor:move(x,y)或self:move(x,y)并使用其他代码 我使用此模式在模块中创建类: local actor = {} function actor:new(
actor
继承新类player
,并使用相同参数在方法player:new(x,y,s)
中调用方法actor:new(x,y,s)
。我需要使player:new
相同,但具有附加参数,以便player
比actor
具有更多属性
有没有办法不仅在new
方法中,而且在其他方法中,比如player:move(x,y)
将调用actor:move(x,y)
或self:move(x,y)
并使用其他代码
我使用此模式在模块中创建类:
local actor = {}
function actor:new(x, y, s)
self.__index = self
return setmetatable({
posx = x,
posy = y,
sprite = s
}, self)
end
-- methods
return actor
实现这一点的一个好方法是使用单独的函数初始化实例。然后,您可以在继承的类中简单地调用基类初始化 如本例所示: 您只需执行以下操作:
actor = CreateClass()
function actor:_init(x,y,s)
self.posx = x
self.posy = y
self.sprite = s
end
player = CreateClass(actor)
function player:_init(x,y,s,name)
actor.init(self, x,y,s)
self.name = name or "John Doe"
end
谢谢你的时间和答案!
actor = CreateClass()
function actor:_init(x,y,s)
self.posx = x
self.posy = y
self.sprite = s
end
player = CreateClass(actor)
function player:_init(x,y,s,name)
actor.init(self, x,y,s)
self.name = name or "John Doe"
end