1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Object = {}

-- 构造方法
function Object:new()
local o = {}
self.__index = self
setmetatable(o,self)
return o
end


-- 继承
function Object:SubClass(className)
_G[className] = {}
self.__index = self
_G[className].base = self -- 实现重写调用父类的方法
setmetatable(_G[className],self)
end

重写并调用父类方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Object:Hello()
print("obj hello")
end

Object:SubClass("Cat")

local c = Cat:new()

function Cat:Hello()
self.base.Hello() -- 调用 .
print("cat hello")
end
c:Hello()