封装
声明一个基类
Object = {}
new
方法实现
function Object:new()
local obj = {}
self.index = self
setmetatable(obj,self)
return obj
end
继承
function Object:subClass(className)
_G[className] = {}
local obj = _G[className]
obj.base = self
self.__index = self
setmetatable(obj,self)
end
使用方法(例如申明一个GameObject
类继承Object
)
Object:subClass("GameObject")
--成员变量
GameObject.posX = 0
GameObject.posY = 0
--成员方法
function GameObject:Move()
self.posX = self.posX + 1
self.posY = self.posY + 1
end
多态
重写GameObject
的Move
方法
function Player:Move()
--base调用父类方法 用点, 自己传第一个参数
self.base.Move(self)
end