Class 用简化的方法继承类?
编辑我在lua中找到了一种更简单的方法,但问题是方法继承 基本上语法是这样的 对象 玩家Class 用简化的方法继承类?,class,inheritance,lua,Class,Inheritance,Lua,编辑我在lua中找到了一种更简单的方法,但问题是方法继承 基本上语法是这样的 对象 玩家 虽然您直接引用了base,但我不确定如何进行此操作,然而,它实际上是您的玩家对象的一个属性: function player:create(x, y, size) self.base:create(x, y) end Lua中的继承基本上是使用实现的。代码: function object:new (o) o = o or {} -- Put the rest of
虽然您直接引用了
base
,但我不确定如何进行此操作,然而,它实际上是您的玩家对象的一个属性:
function player:create(x, y, size)
self.base:create(x, y)
end
Lua中的继承基本上是使用实现的。代码:
function object:new (o)
o = o or {}
-- Put the rest of your create function code here
setmetatable(o, self)
self.__index = self
return o
end
function object:update()
self.value = self.value + 1
end
现在创建一个空的Player类
,它将成为基本对象类
的子类,并将从中继承其所有行为
Player = Object:new()
Player
现在是对象的一个实例。实例化一个新的Player
对象,p
,以便从对象继承new
方法
p = Player:new{x=1, y=2, size=3}
但是,这一次,当执行new
时,self
参数将引用player
。因此,p
的元表将是Player
,其在索引\uu index
处的值也是Player
。因此,p
继承自Player
,后者继承自对象
p = Player:new{x=1, y=2, size=3}
现在,您将编写以下代码:
p:create{x=10, y=20, size=100}
lua在p
中找不到create
字段,所以它会查看Player
类;它在那里也找不到create
字段,因此它将查看对象
,并在那里找到create
的原始实现。使用update
功能也会发生同样的情况
当然,Player
类可以重新定义从其超类继承的任何方法,Object
。例如,如果需要,您可以重新定义create
函数:
function Player:create()
--New create code for Player
end
现在,当您调用p:create{x=10,y=20,size=190}
时,Lua将不会访问对象
类,因为它首先在Player
中找到新的create
函数。很抱歉,这只是我编写的pusado代码,因为我使用的是Pico8。但是我仍然想知道不需要太多字符的最好方法,因为pico 8有65535个字符的限制谢谢,但是我需要能够调用base:()来继承方法,这样我就减少了重复代码的数量。你想在Player
类中继承create
方法,不是吗?当您调用p:create{x=10,y=20,size=100}
噢,所以我不需要在我的播放器中调用base:update()来继承obj:update()?所以我还有一个问题是它是如何设置的?我在create函数中返回self?
function Player:create()
--New create code for Player
end