LUA 面向对象

1 继承,用元表的__index来实现

2 类实例,方法和具体数据绑定。可以设置一张表来共享所有方法

3 objtable:func(...) 调用表的函数时,会把objtable赋值给self,这样函数体里面可以直接使用self访问表的数据

4 例子

classA = {} -- 元表

classA.__index = classA -- __index字段指向自己,这样就会查找元表里面的字段

function classA:hello()

print("classA:hello", self.x, self.y)

end

function classA:new(x, y) --创建实例,就是返回一个绑定了具体数据的普通table

local tb = {}

tb.x = x

tb.y = y

setmetatable(tb, classA) -- 设置元表,这样可以共享元表里面的函数

return tb

end

obj = classA:new(100, 200)

obj:hello() --冒号调用,这样self参数就是obj

obj2 = classA:new(300, 400)

obj2:hello()