这一段大神写好的代码,我直接copy过来了,具体怎么用,我在底下会说明
local function class(classname, super)
local superType = type(super)
local cls
if superType ~= "function" and superType ~= "table" then
superType = nil
super = nil
end
if superType == "function" or(super and super.__ctype == 1) then
-- inherited from native C++ Object
cls = { }
if superType == "table" then
-- copy fields from super
for k, v in pairs(super) do cls[k] = v end
cls.__create = super.__create
cls.super = super
else
cls.__create = super
cls.ctor = function() end
end
cls.__cname = classname
cls.__ctype = 1
function cls.new(...)
local instance = cls.__create(...)
-- copy fields from class to native object
for k, v in pairs(cls) do instance[k] = v end
instance.class = cls
instance:ctor(...)
return instance
end
else
-- inherited from Lua Object
if super then
cls = { }
setmetatable(cls, { __index = super })
cls.super = super
else
cls = { ctor = function() end }
end
cls.__cname = classname
cls.__ctype = 2
-- lua
cls.__index = cls
function cls.new(...)
local instance = setmetatable( { }, cls)
instance.class = cls
instance:ctor(...)
return instance
end
end
return cls
end
添加基类
local Player = class("player")
此基类派生类的方法
function Player:GetObj() --放一个参数
--do anything you want
end
继承基础类
Player_Other = class("PlayerOther", Player)
function Player_Other:GetObj()
self.super:GetObj()
--在这里写你想写的哟
end
也可以重写基础类方法
function Player_Other:GetObj()
---重写父类的方法 在派生类中定义自己的实现方式
end
创建对象 并使用基础类中的方法
local mySelf = Player_Other.new()
mySelf :GetObj()