Class 用简化的方法继承类?

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

编辑我在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 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